Имя: Пароль:
1C
1C 7.7
v7: POST запрос из 1с7.7. Время ожидания операции истекло
0 palpetrovich
 
11.02.19
14:43
код:
    К = Симв(34); // кавычки
    стрАвторизация = "'{"+К+"email"+К+":"+К+Логин+К+","+К+"password"+К+":"+К+Пароль+К+"}'";  // '{"email":"api","password":"111"}'
    URLАвторизация = "https://TrueUrl/api/rest.php/auth/session";;
    WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Option(2,"utf-8");
    WinHttp.Open("POST", URLАвторизация);
    WinHttp.setRequestHeader("Content-type", "application/json;charset=UTF-8");  
    WinHttp.Send(стрАвторизация);
    ТекстОтвета = WinHttp.ResponseText;

вываливается на WinHttp.Send(стрАвторизация);
стрАвторизация пробовал с кавычками, без кавычек, с кавычками преобразованными в %22
результат один - "Время ожидания операции истекло"

Авторизация из мозилы (инструмент RESTED) - с этими параметрами - проходит удачно

Подскажите куда рыть, тема для меня новая, наверняка че-то не вижу "на поверхности"...
1 Garykom
 
гуру
11.02.19
14:52
"Ъ" или свою ВК напиши
2 Garykom
 
гуру
11.02.19
14:52
А еще же curl'а есть
3 palpetrovich
 
11.02.19
15:23
curl конечно есть, но разве WinHttp не работает с 1с?
4 trad
 
11.02.19
15:34
1. winhttp и т.п. в 1с работает
2. таймаут может быть и не из-за "аворизации"
3. //'{"email":"api","password":"111"}' - это пишется так без извратов "'{""email"":"""+Логин+""",""password"":"""+Пароль+"""}'"
4. ОС какая?
5 palpetrovich
 
11.02.19
15:42
(4)
3. это я уже " на воду дую". непонятно-ж что ему не нравится
4. 7-ка
6 Ёпрст
 
11.02.19
15:44
(5) обычно, неверный заголовок или кодировка
7 palpetrovich
 
11.02.19
15:48
(6) заголовок - он-же Header? единственный в коде:
WinHttp.setRequestHeader("Content-type", "application/json;charset=UTF-8");  
кодировку пробовал и отдельно устаанвливать
WinHttp.Option(2,"utf-8");

и преобразование пробовал (где-то скопипастил)
Функция ПреобразоватьСтрокуВУТФ8(Стр)
    
    ScrCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");
    ScrCtrl.Language="JScript";
    Сообщение = ScrCtrl.eval("var uri='"+Стр+"'; encodeURI(uri);");
    Возврат Сообщение;
    
КонецФункции
8 trad
 
11.02.19
15:51
русские буквы есть в логине/пароле?
9 Ёпрст
 
11.02.19
15:53
(7) да хейдер
10 palpetrovich
 
11.02.19
15:54
(8) нет, латиница + цыфры
11 Ёпрст
 
11.02.19
15:58
(7) ежели кодируешь, тогда заголовок такой втыкай:
"Content-type", "application/x-www-form-urlencoded"
12 Garykom
 
гуру
11.02.19
16:00
1. Делаешь чем угодно другим правильно (тот же curl или )
2. Ставишь Fiddler и смотришь как правильно и как не правильно у тя из 1С выходит
3. Думаешь
13 palpetrovich
 
11.02.19
16:03
(11) да нет, ничего не кодирую ...если я правильно понял конечно :)
(12) это дома только смогу, на работе - что-б что-то устагновить - семь кругов пройти надо
14 Ёпрст
 
11.02.19
16:03
(12) это же не наш метод.
А как же методом научного тыка ?!
15 Ёпрст
 
11.02.19
16:04
(13) ну вот ты же пишешь encodeURI, вот и втыкай другой заголовок
16 Garykom
 
гуру
11.02.19
16:08
WinHttp.Open("POST", "адерс", "тут во всех примерах почему то стоит 0")
17 palpetrovich
 
11.02.19
16:08
(15) так то я метод тыка применял )
ну и из
'{"email":"api","password":"111"}'
получал
%7B%22email%22:%22api%22,%22password%22:%22111%22%7D
18 Garykom
 
гуру
11.02.19
16:08
WinHttp.Open("POST", URLАвторизация, 0);
19 palpetrovich
 
11.02.19
16:10
(18) пробовал, результат - тот-же
20 Ёпрст
 
11.02.19
16:11
(17) и ?
заголовок для этого ставь как в (11)
21 Garykom
 
гуру
11.02.19
16:12
22 Ёпрст
 
11.02.19
16:16
(17) и это можешь и просто пустую строку в send() писать, а всю свою "авторизацию" в метод Open воткнуть
23 palpetrovich
 
11.02.19
16:17
(20) увы
%7B%22email%22:%22api%22,%22password%22:%22111%22%7D
WinHttp.Send: WinHttp.WinHttpRequest: Время ожидания операции истекло
(21) читаю...
(22) это типа "базовая авторизация" ?
24 Garykom
 
гуру
11.02.19
16:21
Кстати а почему нет

SetRequestHeader "Content-Length"
25 palpetrovich
 
11.02.19
16:28
(24) это обязательно?  WinHttp.SetRequestHeader("Content-length", "1024"); - не помогло
26 Ёпрст
 
11.02.19
16:29
какой запрос отправляешь в других сервисах ?
27 palpetrovich
 
11.02.19
16:33
(26) тема для меня новая, ничего еще не отправлял
28 trad
 
11.02.19
16:34
(22) в WinHttpRequest.Open нету авторизации
у WinHttpRequest она в SetCredentials
В Open авторизация у Msxml2.ServerXMLHTTP / Msxml2.XMLHTTP

и к тому же это для http-авторизации
а у автора api-авторизация
29 trad
 
11.02.19
16:34
(24) Send сам длину считает
30 palpetrovich
 
11.02.19
16:54
всем спасибо, табла в отсутствии "setProxy" была
31 palpetrovich
 
11.02.19
17:02
* табла  = тРабла
32 Garykom
 
гуру
11.02.19
17:16
(30) Ты не издеваешься?

Инет только через прокси и не в курсе что все проги требуют его указания (и авторизации)?
33 palpetrovich
 
11.02.19
17:53
(32) нет, я заблуждался совершенно серъезно  :)
34 Злопчинский
 
11.02.19
18:18
Как низко пал секам
35 Сияющий в темноте
 
11.02.19
18:22
ну как всегда,собака зарыта в другом месте,а программист пытается пройти в нарисованную дверь.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший