Помогите с запросом к api Mango office WinHttp.WinHttpRequest #803975


#0 by ILNIK19
Добрый день. Уже несколько дней бьюсь над проблемой. Нужно сделать запрос к api АТС Манго офис. Надо получить статистику по звонкам, для этого сделать первый запрос с требуемыми параметрами статистики, потом api возвращает ключ, и ты делаешь второй запрос с этим ключом, для получения данных. В принципе он срабатывает, но есть проблема. Когда в ключе есть символ "+", то при отправке он превращается в пробел. Т.е. я в отладке вижу, что отправляю ключ и в нем есть знак "+", а тех поддержка видит ,что в отсылаемом им ключе вместо "+" стоит пробел. Если ключ не содержит "Плюсов", то все срабатывает как надо, без ошибок. Т.е. запрос статистики срабатывает через раз ,если повезет и не будет в ключе плюса, то ок, иначе ошибка 401. {"name":"Unauthorized","message":"You are requesting with an invalid credential.","code":0,"status":401} В чем может быть дело? Пример запроса с плюсом: } Текст запроса данных:
#1 by ILNIK19
Вот пример на PHP из их руководства ) */ /************ Отправка с использованием file_get_contents ************/ /************ Отправка с использованием cUrl ************/
#2 by Филиал-msk
Как думаешь, что это означает?
#3 by ILNIK19
Это формат для кодирования пар ключ-значение с возможностью дублирования ключей. Каждая пара ключ-значение отделяется символом &, ключ отделён от значения символом = . В ключах и значениях пробелы заменяются на знак +, и затем, используя URL-кодирование, заменяются все не буквенно-цифровые символы.
#4 by ILNIK19
Хэш выходит в виде хх хх хх хх... и тд. Я удаляю пробелы. Может из-за этого? Но вряд ли api примет хэш с пробелами
#5 by Филиал-msk
> ...и затем, используя URL-кодирование, заменяются все не буквенно-цифровые символы И?
#6 by ILNIK19
вы можете сказать, что нужно конкретно сделать? Или будем играть в загадки?
#7 by Филиал-msk
Мне надо чтобы ты заебался и задумался. А тебе надо готового кода и поиграться. Ок. При отправке http запроса необходимо согласовать с сервером кодировку данных. В силу того, что http поточный протокол, информация о методе кодирования данных отправляется раньше, в заголовках. Поэтому, для нормальной работы необходимо передать тело запроса в соответствующем виде. Твоя очередь. Ебись (:
#8 by Филиал-msk
А сейчас выскочит и даст ссылку на Ъ (:
#9 by Lexey_
а зачем WinHttpRequest? Есть же HTTPЗапрос
#10 by Lexey_
+ да ещё и стаж 10 лет, че за фетиш такой на WinHttpRequestы?
#11 by Лодырь
Ну вот он и вспомнил времена старинные, когда HTTPЗапроса не было, а приходилось использовать WinHTTP.
#12 by ILNIK19
я уже с этой задачей и так время от времени занимаюсь пару недель. httpЗапрос пробовал разными вприантами. Манго возвращает ошибку аутентификации, хотя у них полность открытый доступ к api и никакой лог н и пароль не нужен. Пустой прокси прописывал. Защищенное соединение тоже пробовал. ВинРеквест работает, осталось только допилить чуток. Я правильно понимаю, что ошибка не в ключе, а в заголовке? Надосюла копать?
#13 by Филиал-msk
Меня вот больше интересует биологическая особенность, которая проявляется у всех со временем стажа, после обвешивания себя сертификатами и прочими регалиями. У людей напрочь отрубается способность читать написанное, даже то, что они написали своими руками. Пост тому явный пример.
#14 by Филиал-msk
Пост , промахнулся.
#15 by Филиал-msk
Вот так вот пару недель на одной задаче, пару на другой - вот и 10 лет стажа. Удобно!
#16 by ILNIK19
Предлагаю не захламлять тему бесполезными постами. Никому не интересны домыслы разных "спецов", считающих себя самыми умными. Если нечего сказать по делу, то, пожалуйста, не умничайте и не отвлекайте других. Занимаюсь этой темой пару недель, потому что есть основная работа с тремя активными проектами. А данная задача является факультативом в свободное время
#17 by ILNIK19
Все знать невозможно. 1сники со стажем могут заменить и бухгалтера и кадровика и узких специалистов в разных предметных областях вместе взятых. Всегда будет что-то новое. Есть задача, есть разные пути решения. И ни одно решение не является истиной. Так что ваши потуги под...ать других людей не красят вас. Всегда найдется область в которой вы будете профаном, а другой человек обставит вас в два счета
#18 by Lexey_
пример вызова:
#19 by Филиал-msk
Не взлетит. Будет ровно та же самая ошибка.
#20 by Lexey_
уже несколько месяцев исправно летает
#21 by Филиал-msk
Я, кажется, понял. При подготовке к обвешиванию сертификатами применяется подход, который намертво вшивается в подкорку - зазубрить шаблоны примеров и попытаться применить их, надеясь на удачу.В последующем, ровно такой же подход применяется специалистом и в разработке - программирование методом тыка наудачу. Чтобы отстали. Скопировать кусок руководства из интернета, ответить им на сарказм... Чтоб прочувствовали, а то ишь!Думать и читать скопированное совсем не обязательно. И даже вредно для сертифицированных специалистов.
#22 by Филиал-msk
добавь в тело запроса с такими заголовками, например, русские буквы.
#23 by Филиал-msk
хотя можно и показательнее. Добавь в передаваемые данные, например, знак равенства.
#24 by ILNIK19
Не работает. Даже когда плюса нет
#25 by ILNIK19
{"name":"Unauthorized","message":"You are requesting with an invalid credential.","code":0,"status":401}
#26 by Lexey_
да, забыл КодироватьСтроку(СтрокаJSON, СпособКодированияСтроки.КодировкаURL)
#27 by Lexey_
СтрокаЗапроса = СтрШаблон("vpbx_api_key=%1&sign=%2&json=%3", ApiKey, Sign, КодироватьСтроку(СтрокаJSON, СпособКодированияСтроки.КодировкаURL));
#28 by ILNIK19
{"name":"Unauthorized","message":"You are requesting with an invalid credential.","code":0,"status":401}
#29 by Lexey_
Мойkey и Мойsign тоже кодируй, проверил, всё работает Функция ВыполнитьЗапрос(АдресРесурса, ПараметрыЗапроса)
#30 by Lexey_
#31 by Филиал-msk
Вот так вот сертифицированный специалист получил ещё один фрагмент кода, не приходя в сознание. Позже он попробует применить его в изменившемся окружении, фрагмент не сработает и он вернётся к нам с тем же вопросом и топаньем ножками (:
#32 by ILNIK19
Спасибо большое за помощь. Пробую ваш код, все равно не получается Ключ = ПрисланныйКлюч; Отправляю запрос: vpbx_api_key=МойАпиКей&sign=МойСигн&json=%7B%22key%22%3A%22npBHqNSot%2B56LITtFLmXBntHtRW0UieuljXQzda%2BRcKfOkJMaj%2B70w7VDMjbK2eullwcsAlL7Oq4okP9wzN64Q%3D%3D%22%7D Ответ: {"name":"Unauthorized","message":"You are requesting with an invalid credential.","code":0,"status":401}
#33 by ILNIK19
Не мешай, раз не знаешь, как сделать
#34 by Филиал-msk
Я переживаю. Как оно там, работает?
#35 by ILNIK19
Общаюсь с ТП Манго: Проверьте пожалуйста сейчас: Запрос такой vpbx_api_key=МойApiKey&sign=МойSign&json=%7B%22key%22%3A%22v494KPOUaKTGH8ZmV%2F3PMrD%2FDb%2FtOHqr4edKmUgI%2FNiQxyxbWWJK3JS43MKKZsZxixtUQOkVslg95rOCLjmrLQ%3D%3D%22%7D {"name":"Unauthorized","message":"You are requesting with an invalid credential.","code":0,"status":401} Ответ ТП: Вы получили {"key":"v494KPOUaKTGH8ZmV/3PMrD/Db/tOHqr4edKmUgI/NiQxyxbWWJK3JS43MKKZsZxixtUQOkVslg95rOCLjmrLQ=="} Плюс еще нуль символ в параметре перед буквой v в самом начале ?vpbx_api_key": "МойApi"
#36 by ILNIK19
Символ слэша пропадает
#37 by ILNIK19
Короче победил. Если используется кодировка UTF-8 при отправке запроса, то в начале контента 1с принудительно записывает BOM. Нужно это отключить: И все взлетело. Большое спасибо Lexey. Подал идею кодировки запроса в URL
#38 by Филиал-msk
> Подал идею кодировки запроса в URLПримерно 20 часов потребовалось сертифицированному специалисту, чтобы разобрать и понять собственные каракули из . Это успех! Поздравляю!
#39 by ILNIK19
Задача решена, какая разница сколько времени это заняло? Я занимаюсь этим параллельно другими задачи. Когда я сдавал сертификаты 10 лет назад, этих объектов и в помине не было. В следующий раз сделаю эту задачу за 10 минут. А ты 20 часов только троллишь и мешаешь другим. Ну продолжай в том же духе... Беспричинное унижение других людей в интернете говорит о твоих проблемах в жизни и твоих комплексах. У меня нет времени на то, чтобы ублажать твое эго! Тебе с этим жить...
#40 by oleg_km
Мда, доктор бы тебя так вылечил: кинул клич по форумам, кто-то что-то посоветовал, быстренько попробовал, ура поциент не умер.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С