При открытии полученного временного файла details.html в браузере открывается страница (скрин 1). Возможно стоит подключаться не к http://edi.kontur.ru/ а к https://auth.kontur.ru/ ?
Поддержка контура не помогают,внутренняя информация мол.
Подскажите что делаю не так, возможно литература есть какая то, в гугле ничего толкового не нашёл.
(13) если уж делать то через API. вот здесь вся необходимая документация http://docs.edi.kontur.ru/en/latest/ примеров на 1с конечно не будет, лучший пример на 1С это сам интеграционный модуль контура. Зачем играть в угадайку с GET если есть подробное описание API
Да вообще в угадайку играть не надо - есть F12, а там есть все запросы, которые генерятся с клиента к серверу. Я, кстати, ко многим площадкам так подключался (правда, на 8.3 и стандартными методами) без АПИ...
С другой стороны, если есть АПИ (а веб-клиент, по-сути, это АПИ и использует), то, как говорится, сам Бог велел...
А чем вас интеграция с 1С самого контура не устроила? Также у них есть апи с документацией к нему, но для работы с ним, вам нужен ключ разработчика, который тоже платный, как и интеграция. Подключиться к сайту как к веб сервису у вас наврятли получиться, там ведь тоже не дураки сидят.
Если система работает из браузера, то наивно полагать, что нельзя прикрутить к ней "эмулятор браузера". Я как-то писал про сайт со списком ломбардов - там тоже далеко не дураки сидели, но от F12 их это не спасло...
(17)
Не, ну это то понятно, вот только вопрос, стоит ли это потраченого времени? Допустим, прикрутит он "эмулятор браузера", потратит на это прорву времени, а они возьмут и сменят алгоритмы запросов, что тогда? Все переделывать?
а они возьмут и сменят алгоритмы запросов, что тогда? Все переделывать?
Так и АПИ не предполагает, что алгоритмы не поменяются. С другой стороны, веб-страница - это тоже приложение, и оно работает с системой через то самое АПИ, так что если поменяется само веб-приложение, но не поменяется АПИ, то все будет работать и в режиме "эмуляции" веб-приложения.
20.
Intercititude
16.03.20 12:19 Сейчас в теме+1 $m
(15) Вообще мне нужны данные о количестве всего лишь, а именно то количество которое запрашивал партнёр при создании заказа. По итогу сделать хочу отчёт,который будет показывать эту разницу в количестве.
У них в Api не нашёл такой информации. Не знаю даже как лучше быть ?
(20) Смотри, если нужно именно через WinHttp, то должно быть что-то вроде(насчет обязательности всех заголовков не уверен):
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
//Делаем коннект без заголовков, нам нужно будет из кук выдернуть нужные нам данные
WinHttp.Open("GET","https://auth.kontur.ru/?tabs=1,1,0,0&customize=edi&back=https%3A%2F%2Fedi.kontur.ru%2FSelectParty%3Freason%3Dlogout",0);
WinHttp.send();
//собственно сами куки
cookies = WinHttp.getAllResponseHeaders();
//выбираем нужные данные
токен = Сред(cookies,СтрНайти(cookies, "AntiForgery=")+12, 36); //без этой гадости сервер нам будет китайскую поэму высылать
Stiky = Сред(cookies,СтрНайти(cookies, "Sticky=")+7, 36);
ntoken= Сред(cookies,СтрНайти(cookies, "ngtoken=")+8, 24);
//Теперь собственно сама авторизация
WinHttp.Open("POST",Сервер,0);
WinHttp.SetRequestHeader("Connection", "keep-alive");
WinHttp.SetRequestHeader("Host", "auth.kontur.ru");
WinHttp.SetRequestHeader("Accept", "application/json, text/plain, */*");
WinHttp.SetRequestHeader("Accept-Encoding", "gzip, deflate, br");
WinHttp.SetRequestHeader("Origin", "https://auth.kontur.ru");
WinHttp.SetRequestHeader("Referer","https://auth.kontur.ru/tabs=1,1,0,0&customize=edi&back=https%3A%2F%2Fedi.kontur.ru%2FSelectParty%3Freason%3Dlogout");
WinHttp.SetRequestHeader("TE", "Trailers");
WinHttp.SetRequestHeader("Upgrade-Insecure-Requests", "1");
WinHttp.SetRequestHeader("Cookie", Stiky+"; "+токен+"; "+ntoken);
WinHttp.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; W…) Gecko/20100101 Firefox/73.0");
WinHttp.SetRequestHeader("Accept-Language", "ru-RU,ru");
WinHttp.SetRequestHeader("X-CSRF-Token", токен);
WinHttp.SetRequestHeader("Content-Length", "72");
WinHttp.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
WinHttp.send("{""Login"":""ЗдесьПишимЛогин"",""Password"":""ЗдесьПарольСоответственно"",""Remember"":false}");
//Забираем токен для подключения из куков
CookiNew = WinHttp.getAllResponseHeaders();
ТокенРабочий = Сред(CookiNew,СтрНайти(CookiNew, "token=")+6, 128);
АвтСид = Сред(CookiNew,СтрНайти(CookiNew, "auth.sid=")+9, 64);
//Получаем список последних сообщений
WinHttp.Open("POST","https://edi.kontur.ru/internal-api/message-monitoring-2/messages/search/new",0);
WinHttp.SetRequestHeader("Connection", "keep-alive");
WinHttp.SetRequestHeader("Accept", "*/*");
WinHttp.SetRequestHeader("Accept-Encoding", "gzip, deflate, br");
WinHttp.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
WinHttp.SetRequestHeader("Cache-Control", "no-cache, no-store");
WinHttp.SetRequestHeader("TE", "Trailers");
WinHttp.SetRequestHeader("Cookie", ntoken+"; "+ТокенРабочий+"; "+АвтСид);
WinHttp.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; W…) Gecko/20100101 Firefox/73.0");
WinHttp.SetRequestHeader("Host", "edi.kontur.ru");
WinHttp.SetRequestHeader("Origin", "https://edi.kontur.ru");
WinHttp.SetRequestHeader("Pragma", "no-cache");
WinHttp.SetRequestHeader("Content-Length", "527");
WinHttp.SetRequestHeader("Content-Type", "text/plain;charset=UTF-8");
WinHttp.send("{""query"":{""senderIdExpression"":null,""senderProviderIdExpression"":null,""recipientIdExpression"":null,""recipientProviderIdExpression"":null,""deliveryPartyGlnExpression"":null,""number"":null,""orderNumber"":null,""errorsQueryString"":null,""receivedTimeRange"":{""lowerBound"":""2020-02-15T21:00:00.000Z"",""upperBound"":null},""senderMessageFormats"":[],""recipientMessageFormats"":[],""senderTransportTypes"":[],""recipientTransportTypes"":[],""messageTypes"":[],""documentTypes"":[],""messageMonitoringDocumentStates"":[],""skip"":0,""take"":20}}");
Показать
Но при работе через WinHttp может быть засада,последний запрос может вернуть крякозябры, почитал в инете, проблема распространенная, решения не нашел. При это такая же конструкция, через Новый HTTPСоединение спокойно вернула мне список в читабельно формате: