|
Не взлетает HTTPСоединение. В чем тут может быть ошибка. | ☑ | ||
---|---|---|---|---|
0
Галахад
гуру
11.02.15
✎
10:41
|
По мануалу нужно
1. Выполнить запрос следующего формата: <device_url>/new_session.html. Результатом запроса является JSON–объект, содержащий поля device_salt, session_salt 2. , 3. На основе полученных данных сгенерировать строку pass_sha256. 4. выполнить запрос следующего формата: <device_url>/scripts/login.php?login=<user_name>&pass_sha256=<pass_sha256> , где <user_name> — имя учетной записи пользователя (admin или user), <pass_sha256> — строка, вычисленная в п.3. На одинэсе это выглядит так: Шаг 1. ТекстЗапроса = "new_session.html"; Соединение = Новый HTTPСоединение(Сервер, Порт, Логин, Пароль, Прокси); Соединение.Получить(ТекстЗапроса, имяВыходногоФайла); Получаю ответ: {"error":"","error_id":"","device_salt":"1C95CE4F34F3FEC5CE3E69FC46F7487A","session_salt":"jcDGdRC5iwfXA3sl2MyuUKeZBQbvVYImqHoTg8nS1W7rJEtLNaO6x49hkPpz0F","api_version":"3.1"} Шаг 4. ТекстЗапроса = scripts/login.php?login=admin&pass_sha256=24bd1d59d119b8255dabb30fdfebc911af9bb981af9643229824a22477a25849 Соединение = Новый HTTPСоединение(Сервер, Порт, Логин, Пароль, Прокси); Соединение.Получить(ТекстЗапроса, имяВыходногоФайла); Получаю ответ: {"error":"\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0441\u0441\u0438\u0438: \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0438\u0441\u0442\u0435\u043a\u043b\u043e. \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.","error_id":"session_failed"} |
|||
1
Галахад
гуру
11.02.15
✎
10:47
|
Шаги 2., 3. проверил на калькуляторе. :-)
Вроде ошибок нет. Значит как-то не так передаю данные по HTTPСоединение. |
|||
2
ShoGUN
11.02.15
✎
10:50
|
(1) А в заголовках ничего указать не надо?
|
|||
3
Галахад
гуру
11.02.15
✎
10:53
|
(2) Вроде нет. Вот кусок документации:
8.2 Web API Обращение к устройству ВСП Statistics Dome осуществляется посредством GET– или POST-запросов, посылаемых по протоколу HTTP/HTTPS. Для работы с устройством требуется: 1) поддержка cookie; 2) отключение проверки подлинности сертификатов. Список возможных запросов: 1) аутентификация; … Каждый запрос имеет следующий формат: <протокол>://<IP–адрес устройства или доменное имя>:<порт>/<путь к скрипту>?<параметры> В дальнейшем для сокращения записи вместо <протокол>://<IP–адрес устройства или доменное имя>:<порт> будет использоваться <device_url>. Ответы на запросы (если это не оговорено отдельно) поступают в виде объекта JSON и содержат поля error и error_id, значения которых позволяют судить об успешности выполнения запроса: Ответы на запросы могут иметь дополнительные поля, не описанные в документации. Строчки в выходных параметрах имеют кодировку UTF-8. |
|||
4
ShoGUN
11.02.15
✎
11:29
|
(3) Если декодировать escape-последовательности, то получится: "Ошибка сессии: время ожидания истекло. Перезагрузите страницу." :)
|
|||
5
Галахад
гуру
11.02.15
✎
11:39
|
(4) Ага. В мануале это звучит так:
ошибка сессии (может возникнуть, если сессия истекла в процессе аутентификации; следует полностью повторить процедуру аутентификации) Насколько я понимаю, чего-то не то я отправил на 4 шаге. Непонятно только чего надо... |
|||
6
Bober
11.02.15
✎
11:57
|
(5) на шаге 4 нужно в заголовки передать куки.
|
|||
7
Bober
11.02.15
✎
11:58
|
(5) лучше всего посмотреть как это все работает в браузере по F12.
|
|||
8
oleg_km
11.02.15
✎
12:22
|
(7) Или фиддлером
|
|||
9
Галахад
гуру
11.02.15
✎
12:31
|
(6), (8) Спасибо!
Переписал шаг 4. и заработало: ЗаголовкиHTTP = Новый Соответствие; Куки = ОтветHTTP.Заголовки["Set-Cookie"]; Если ЗначениеЗаполнено(Куки) Тогда ЗаголовкиHTTP.Вставить("Cookie", Куки); КонецЕсли; ЗапросСерверу = Новый HTTPЗапрос(ТекстЗапроса); ЗапросСерверу.Заголовки = ЗаголовкиHTTP; ОтветHTTP = Соединение.Получить(ЗапросСерверу, имяВыходногоФайла); |
|||
10
ShoGUN
11.02.15
✎
12:42
|
(9) А мне спасибо за (2)? :))))
|
|||
11
Галахад
гуру
11.02.15
✎
12:46
|
(10) Гм. Как обычно, правильный ответ в самом начале. :-) Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |