Имя: Пароль:
1C
 
vbscript
,
0 onetone
 
05.02.18
17:03
Всем привет, помогите разобраться с бЯдой.

Имеем такой кусок кода

ИмяФайла = ПолучитьИмяВременногоФайла("xml");
    Скрипт =Новый COMОбъект("MSScriptControl.ScriptControl");
    Скрипт.Language="vbscript";                
    
    x = Новый COMОбъект("Microsoft.XMLHTTP");  
    x.Open("POST", сокрЛП(Константы.АдресСервераСМС.Получить())+"/smw/aisms?action=post_sms&user=" + СокрЛП(Константы.ЛогинСМС.Получить()) + "&pass=" + СокрЛП(Константы.ПарольСМС.Получить()) + "&sender=" + сокрЛП(Константы.ОтправительСМС.Получить()) + "&target=%2B" + Телефон + "&message=" + СокрЛП(ТекстСМС), 0, СокрЛП(Константы.ЛогинСМС.Получить()),СокрЛП(Константы.ПарольСМС.Получить()));
    x.Send();    
    
    s = Новый COMОбъект("ADODB.Stream");  
    s.Mode = 3;  
    s.Type = 1;  
    s.Open();    
    
    Скрипт.AddObject("s",s);  
    Скрипт.AddObject("x",x);  
    Скрипт.Eval("s.Write(x.responseBody)");    
    s.SaveToFile(ИмяФайла, 2);

на одном из компьютеров, вываливается с ошибкой
Скрипт.Eval("s.Write(x.responseBody)");    
Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.

Как и в аналогичной теме Опять  вопрос  про  WinHttp.dll но решения там не выложили. Помогите, куда копать?
1 mehfk
 
05.02.18
17:06
А зачем вообще этот гемор с com-объектами, когда 1С 8 сама прекрасно работает с http?
2 vde69
 
05.02.18
17:07
проверь собраную строку на предмет недопустимых символов типа кавычек и т.д.
3 drcrasher
 
05.02.18
17:07
(1) восьмёрка сырая™
4 onetone
 
05.02.18
17:08
(1) досталось по наследству, переписывать за бесплатно не хочется, а клиент платить не хочет.
5 mehfk
 
05.02.18
17:08
(3) Варить пробовал?
6 mehfk
 
05.02.18
17:09
(4) Ну на нет и суда нет. Так и скажи - не работает, потому что ты не хочешь платить.
7 onetone
 
05.02.18
17:13
(2) проверял, если вставить собранную строку в браузер, отрабатывает как надо
8 vde69
 
05.02.18
17:20
(7) уверяю дело именно в ней...

или давай сюда полученную строку или думай сам
9 DexterMorgan
 
05.02.18
17:22
(4) че там переписывать то, дольше ковыряться будешь
10 onetone
 
05.02.18
17:22
(8) http://92.50.156.138:26676/smw/aisms?action=post_sms&user=1&pass=1&sender=M2M&target=%2B79994450987&message=Здравствуйте, Шуппе К.А. Ваши карты на складе
11 vde69
 
05.02.18
17:22
ну и еще, если мне склероз не изменяет, параметр 0 - авто определение прокси из регистра... возможно дело в настройках прокси...
12 onetone
 
05.02.18
17:23
(9) Возможно, если никто дельным советом не поможет, перепишу.
13 onetone
 
05.02.18
17:24
(11) Прокси нет
14 vde69
 
05.02.18
17:24
1. пробел после post
2. кракозябры
15 onetone
 
05.02.18
17:27
(14) 1 не пробел, а нижнее подчёркивание.
2. Тело смс идет в кодировке.
17 vde69
 
05.02.18
17:35
добавь кавычки в начало и в конец, у тебя пробелы есть

"http://92.50.156.138:26676/smw/aisms?action=post_sms&user=1&pass=1&sender=M2M&target=%2B79994450987&message=Здравствуйте, Шуппе К.А. Ваши карты на складе"
18 drcrasher
 
05.02.18
17:42
(17) тогда не кавычки, а вместо пробелов %20
19 onetone
 
05.02.18
18:28
(17) (18) Вас не смущает что проблема только с одним компом, у других все норм?
20 onetone
 
05.02.18
21:31
Переписал отправку через http

HTTP = Новый HTTPСоединение(Константы.АдресСервераСМС.Получить(),,Константы.ЛогинСМС.Получить(), Константы.ПарольСМС.Получить());
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
    Заголовки.Вставить("charset", "UTF-8");

ТелоСкрипта = "smw/aisms?action=post_sms&user=" +
    Константы.ЛогинСМС.Получить() +
    "&pass=" + Константы.ПарольСМС.Получить() +
    "&sender=" + Константы.ОтправительСМС.Получить() +
    "&target=%2B" + "79252886512" +
    "&message=" + "проверка";
    
    HTTP.Получить(Новый HTTPЗапрос(ТелоСкрипта, Заголовки), ИмяФайла);

Смски отправляются, но в ответ приходится иероглифы, никак не могу расшифровать:

?       5?K
?  ?B?RZ
j?I(?~???``V3f{?En_?>3??dRo?7g??????s??(!?(?`z $)z ?F?J-?#? ?[??Fyl
21 onetone
 
05.02.18
21:31
(20) Читай файл так
Ф = Новый ТекстовыйДокумент;
Ф.Прочитать(ИмяФайла, КодировкаТекста.UTF8);
22 onetone
 
05.02.18
21:33
А должно быть, что то типа того:
<output>

<result>

<sms id="8535020" phone="79171234567"/>

<sms id="8535021" phone="79057654321"/>

</result>

<errors>

<error phone="1">Неправильный номер телефона: 1</error>

<error phone="zz">Неправильный номер телефона: zz</error>

</errors>

</output>
23 glebgleb
 
05.02.18
21:45
(20) Укажи в заголовках явно, что ты gunzip не умеешь.
И урленкодом логины пароли и прочую хню прикрой.
24 glebgleb
 
05.02.18
21:48
И у тебя вообще гет а не пост.
25 onetone
 
05.02.18
22:16
(24) так я вроде через гет и обращаюсь? (HTTP.Получить())
26 glebgleb
 
05.02.18
22:27
(25) А к чему тогда 6я строчка в листинге (0)?
27 onetone
 
05.02.18
22:37
(26) Аа, не это не мое творение. Так было сделано до меня, и все работало.  А теперь по словам клиента, как бы само перестало. Мне было проще переписать.
28 glebgleb
 
05.02.18
22:47
(27) То есть, если верить (19), раньше оно не работало только  на одном компьютере, а теперь не работает вообще. При этом переписывать забесплатно не хочется, но три с половиной часа ты на это уже угрохал.

Чудны дела твои, Господи.