Имя: Пароль:
1C
1С v8
Ошибка при вызове метода контекста (send)
0 falselight
 
08.09.16
12:00
Подскажите пожалуйста как избавиться от этой ошибки:

    //
    УРЛ = "ссылка" + СокрЛП(ЭлементыФормы.url.Значение);
    ХМЛХТТП = ПолучитьCOMОбъект("", "Microsoft.XMLHTTP");
    ХМЛХТТП.Open("GET", УРЛ, Ложь);
    ХМЛХТТП.Send(Null);  
    Пока ХМЛХТТП.Status <> 200 Цикл
        Состояние("Ждем...");
    КонецЦикла;
    //ТегНачалоРезультата     = "<parents>";
    //ТегКонецРезультата         = "</parents>";
    //ТегНачалоРезультата2     = "<id>";
    //ТегКонецРезультата2     = "</id>";
    //ТегНачалоПоля     = "<" +     ТегПоляНаСайте + ">";
    //ТегКонецПоля     = "</" +     ТегПоляНаСайте + ">";
    ТекстОтвета = ХМЛХТТП.ResponseText;
    //



{Форма.Форма.Форма(7)}: Ошибка при вызове метода контекста (send)
    ХМЛХТТП.Send(Null);  
по причине:
Произошла исключительная ситуация (msxml3.dll): Указанный протокол неизвестен.
1 Serginio1
 
08.09.16
12:04
Аналог null в 1С это неопределено
2 Cyberhawk
 
08.09.16
12:05
(1) Аналог, да не аналог и не везде :)
3 Serginio1
 
08.09.16
12:06
(2) В ВК кстати Null
4 falselight
 
08.09.16
12:13
работает на других функциях с null
я решил проверить обработкой, выдает ошибку
на метод send, что нужно исправить?
5 sapphire
 
08.09.16
12:16
(0)
https://msdn.microsoft.com/ru-ru/library/ms536736.aspx

send method

Sends an HTTP request to the server and receives a response.
Syntax
XMLHttpRequest.send(varBody);
Parameters
varBody [in, optional]
Type: any
Any that specifies the body of the message being sent with the request.
Value    Meaning
ArrayBuffer
A binary data. See FileReader.readAsArrayBuffer.
blob
A Blob (binary data object).
Document
A documentnode.
ArrayBufferView
A typed array view of an ArrayBuffer.
string
A DOMString.
FormData
A FormData object

Как видим, NULL там нет :)
6 falselight
 
08.09.16
12:17
(1) если ставить неопределено за место null таже ошибка
7 sapphire
 
08.09.16
12:17
+(5) Но, поскольку varBody optional, то,
ХМЛХТТП.Send();
8 falselight
 
08.09.16
12:17
(0) а что там должно быть?
9 sapphire
 
08.09.16
12:18
(6) Не ставьте вообще ничего
10 falselight
 
08.09.16
12:18
(9) попробую
11 falselight
 
08.09.16
12:21
(9) ругается

{Форма.Форма.Форма(8)}: Ошибка при вызове метода контекста (send)
    ХМЛХТТП.Send();  
по причине:
Произошла исключительная ситуация (msxml3.dll): Указанный протокол неизвестен.
12 falselight
 
08.09.16
12:21
что то не так!!!
13 Serginio1
 
08.09.16
12:22
(12) Пустую строку
14 sapphire
 
08.09.16
12:22
(11) Так это не потому.
Вы в УРЛ пихаете что?
УРЛ = "ссылка" + СокрЛП(ЭлементыФормы.url.Значение);
15 Serginio1
 
08.09.16
12:22
16 sapphire
 
08.09.16
12:23
+(14) Любой браузер ругнется на такой урл
17 falselight
 
08.09.16
12:27
(16) то что я ложу в УРЛ пробовал в браузере он возвращает номер, то есть работает
18 falselight
 
08.09.16
12:32
брал с отладчика с табло, вставлял в строку браузера
19 sapphire
 
08.09.16
12:34
(17) НЕ ВЕРЮ (с)
20 sapphire
 
08.09.16
12:35
(18) значение УРЛ в студию.
21 Serginio1
 
08.09.16
12:35
(18) А там по аналогии с 1С
xhr.open('POST', '/server', true);

а в Send ресурсы
22 falselight
 
08.09.16
12:37
23 Serginio1
 
08.09.16
12:38
24 Serginio1
 
08.09.16
12:39
А попробуй
ХМЛХТТП.Open("GET", "http://www.reestr35.ru/admin/offline_func.php";, Ложь);
    ХМЛХТТП.Send("?act=add_redirect&url=http://ya.ru";);
25 sapphire
 
08.09.16
12:43
(22)

УРЛ = "http://www.reestr35.ru/admin/offline_func.php?act=add_redirect&url=http://ya.ru";;
ХМЛХТТП = ПолучитьCOMОбъект("", "Microsoft.XMLHTTP");
ХМЛХТТП.Open("GET", УРЛ, Ложь);
ХМЛХТТП.Send(Null);  
Пока ХМЛХТТП.Status <> 200 Цикл
     Состояние("Ждем...");
КонецЦикла;
ТекстОтвета = ХМЛХТТП.ResponseText;

У меня работает.
26 falselight
 
08.09.16
12:46
(25) почему у меня может быть ошибка?
27 falselight
 
08.09.16
12:54
(26) не подскажете? если все одинаково, то дело в сервере?
28 Serginio1
 
08.09.16
12:57
29 falselight
 
08.09.16
12:58
(28) попробовал на своем компе, тоже самое, ошибка
30 Serginio1
 
08.09.16
12:59
31 falselight
 
08.09.16
12:59
(28) все же не понимаю как мне устранить эту ошибку? (
32 falselight
 
08.09.16
13:00
(30) (24) в смысле?
33 falselight
 
08.09.16
13:01
(30) но вы говорите же что у вас выполняется все
34 Serginio1
 
08.09.16
13:07
врап=новый COMОбъект("NetObjectToIDispatch45");
    HttpClient=Врап.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll");
  
  
  handler = врап.СоздатьОбъект("System.Net.Http.HttpClientHandler");
  DecompressionMethods= Врап.ПолучитьТип("System.Net.DecompressionMethods");
  handler.AutomaticDecompression=Врап.OR(DecompressionMethods.GZip,DecompressionMethods.Deflate) ;
  
  Клиент=Врап.СоздатьОбъект(HttpClient,handler);
  УРЛ = "http://www.reestr35.ru/admin/offline_func.php?act=add_redirect&url=http://ya.ru";;
  Стр=Клиент.GetStringAsync(УРЛ).Result;
  Сообщить(Стр);

//Клиент.Dispose();
  Врап.ЗакрытьРесурс(Клиент);

Выдает

Your IP (хх.ххх.х.ххх) is not allowed.
35 falselight
 
08.09.16
13:09
(34) да если пробовать как в 24, тоже
36 Serginio1
 
08.09.16
13:12
(33) Это не я а 25
37 Serginio1
 
08.09.16
13:13
(32) Попробуй 15+30
38 falselight
 
08.09.16
14:14
(36) узнал что такое бывает на сервере иногда
то есть в иной период возможно сработает, как в (0)
39 Serginio1
 
08.09.16
14:22
(38) Побробуй 37 для успокоения души
40 Serginio1
 
08.09.16
14:23
38 при этом из браузера читает?
41 falselight
 
08.09.16
14:30
(39) пока меня выкинуло с сервера и не пускает (((( ожидаю когда наладится если

(24) вот это сработало у меня на компе, выдав результат Your IP (хх.ххх.х.ххх) is not allowed, так как там можно только с сервера, я хотел проверить это на сервере и меня выбросило
то есть при (24) ошибки той нет, и по коду идет дальше

(40) (0) + ссылка из (22) в браузере возвращает число на пустой странице, которое мне и нужно считать
42 Serginio1
 
08.09.16
14:39
(41) Значит у тебя проблема с библиотеками на сервере. Небось 64 разрядны. А почему HTTPСоединеие не используешь?
Почему 37 не хочешь попробовать?
43 eklmn
 
гуру
08.09.16
14:57
прокси все ломает...
44 sapphire
 
08.09.16
14:59
(42) Нет не с библиотеками.
45 Serginio1
 
08.09.16
15:01
(44) Возможно. Я таким анахронизмом давно не занимаюсь.
46 sapphire
 
08.09.16
15:02
(41) У меня тоже именно это (Your IP (хх.ххх.х.ххх) is not allowed) и выдало.
О чем это говорит, что разрешен вход либо под определенным агентом с определенной подсети, иначе браузер не выдавал бы
числа  <<ссылка из (22) в браузере возвращает число на пустой странице, которое мне и нужно считать>>.
47 falselight
 
08.09.16
15:53
(42) на сервере 64х разрядная система
(46) да работать это будет только на сервере
48 falselight
 
08.09.16
15:54
(42) (37) там много написано, изучать неделю только нужно, мне дали пример кода и что делать объяснили, но вот из за ошибки на send ничего не работает
49 sapphire
 
08.09.16
15:54
(47) неа, иначе как ты видишь ссылка из (22) в браузере возвращает число на пустой странице, которое мне и нужно считать.
50 falselight
 
08.09.16
15:55
(49) я вижу это в браузере на сервере, там только работает
51 falselight
 
08.09.16
15:57
но вот из 1с ломается на методе send, пока ни разу не сработало

то что в (24) возвратило <?xml version="1.0" encoding="UTF-8"?> то есть это не подойдет наверное, так как это не то что нужно
52 falselight
 
08.09.16
16:00
{Форма.Форма.Форма(7)}: Ошибка при вызове метода контекста (send)
    ХМЛХТТП.Send(Null);  
по причине:
Произошла исключительная ситуация (msxml3.dll): Указанный протокол неизвестен.

||

остается
53 Serginio1
 
08.09.16
16:18
(48) Что в 34 изучать?
Здесь лежит DLL и инструкция как зарегистрировать
http://files.rsdn.org/19608/%d0%a4%d0%b0%d0%b9%d0%bb%d1%8bNetObjectToIDispatch.zip

Кроме того про регистрацию можно посмотреть здесь
Использование классов .Net в 1С для новичков
54 Serginio1
 
08.09.16
16:20
Рядом с NetObjetToIDispatch45.dll лежит RegAsm.bat
его нужно запустить от администратора. Там делов меньше минуты
55 falselight
 
08.09.16
16:56
(54) ну я не администратор на сервере, мне сказали что метод сенд иногда не работает, иногда работает, я не пойму этого всего пока
56 falselight
 
08.09.16
16:57
(54) я не в теме этого всего, с этим всем нужно разбираться
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший