Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   HTTTP запрос и JSON (http://forums.kuban.ru/f1040/htttp_zapros_i_json-8740980.html)

Moralny 18.10.2018 17:18

HTTTP запрос и JSON
 
Уважаемые, пытаюсь законектиться к CRM envycrm
У них в описании API сказано
Для получения полного списка клиентов необходимо вызвать метод:
POST [url]https://envycrm.com/crm/api/v1/client/list/?api_key=ваш_ключ_апи[/url]
В качестве параметров запроса необходимо передать в тело запроса JSON массив параметров для поиска, вида:
**"request":**"keyword": "", "limit": 0, "offset": 0, "date_start": "2017-07-10", "date_end": "2017-07-10"****
Пишу
Процедура КнопкаВыполнитьНажатие(Кнопка)
Соединение = Новый HTTPСоединение("********.envycrm.com", ,"*******@mail.ru", "********",,,Новый ЗащищенноеСоединениеOpenSSL,Истина);
Запрос = Новый HTTPЗапрос("https://envycrm.com/crm/api/v1/client/list/?api_key=**********************************");
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("keyword","");
ПараметрыЗапроса.Вставить("limit",100);
ПараметрыЗапроса.Вставить("offset",0);
ПараметрыЗапроса.Вставить("date_start","2018-01-01");
ПараметрыЗапроса.Вставить("date_end","2019-01-01");
Стр = ЗначениеВJSON(ПараметрыЗапроса);
Запрос.УстановитьТелоИзСтроки(Стр,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать);
ИмяФайлаОтвета = ПолучитьИмяВременногоФайла("txt");
Результат = Соединение.ОтправитьДляОбработки(Запрос, ИмяФайлаОтвета);
Текст = Новый ЧтениеТекста(ИмяФайлаОтвета, КодировкаТекста.UTF8);
Ответ = Текст.Прочитать();
Сообщить("Вернули код " + Результат.КодСостояния);
Сообщить("Результат: " + Ответ);
КонецПроцедуры

Функция ЗначениеВJSON(Данные, ПараметрыЗаписи = Неопределено)
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ПроверятьСтруктуру = Истина;
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
ЗаписатьJSON(ЗаписьJSON, Данные);
Результат = ЗаписьJSON.Закрыть();
Возврат Результат;
КонецФункции
Показать

Там, где звездочки - логин, пароль клиента и ключ api, конечно. Всё правильно, авторизация проходит.
В ответ получаю код 200 (выполнено) и ... html-страницу их сайта. Всё. Поддержка мычит что-то невразумительное
Я что-то делаю не так ? Похоже собственно до JSON достучаться не удается, параметры и ссылка игнорируются и я просто получаю get-запросом (хотя делаю post) заглавную страницу сайта
Что делать и кто виноват ?

Uho 18.10.2018 18:16

Разрешаю

Moralny 18.10.2018 18:50

А тут ограничение на колво символов ? Мдя. Давно я тут не был

Moralny 18.10.2018 19:00

В качестве параметров запроса необходимо передать в тело запроса JSON массив параметров для поиска, вида:
**"request":**"keyword": "", "limit": 0, "offset": 0, "date_start": "2017-07-10", "date_end": "2017-07-10"****

Пишу
Процедура КнопкаВыполнитьНажатие(Кнопка)
Соединение = Новый HTTPСоединение("********.envycrm.com", ,"*******@mail.ru", "********",,,Новый ЗащищенноеСоединениеOpenSSL,Истина);
Запрос = Новый HTTPЗапрос("https://envycrm.com/crm/api/v1/client/list/?api_key=**********************************");
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("keyword","");
ПараметрыЗапроса.Вставить("limit",100);
ПараметрыЗапроса.Вставить("offset",0);
ПараметрыЗапроса.Вставить("date_start","2018-01-01");
ПараметрыЗапроса.Вставить("date_end","2019-01-01");
Стр = ЗначениеВJSON(ПараметрыЗапроса);
Запрос.УстановитьТелоИзСтроки(Стр,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать);
ИмяФайлаОтвета = ПолучитьИмяВременногоФайла("txt");
Результат = Соединение.ОтправитьДляОбработки(Запрос, ИмяФайлаОтвета);
Текст = Новый ЧтениеТекста(ИмяФайлаОтвета, КодировкаТекста.UTF8);
Ответ = Текст.Прочитать();
Сообщить("Вернули код " + Результат.КодСостояния);
Сообщить("Результат: " + Ответ);
КонецПроцедуры

Функция ЗначениеВJSON(Данные, ПараметрыЗаписи = Неопределено)
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ПроверятьСтруктуру = Истина;
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
ЗаписатьJSON(ЗаписьJSON, Данные);
Результат = ЗаписьJSON.Закрыть();
Возврат Результат;
КонецФункции
Показать


Там, где звездочки - логин, пароль клиента и ключ api, конечно. Всё правильно, авторизация проходит.
В ответ получаю код 200 (выполнено) и ... html-страницу их сайта. Всё. Поддержка мычит что-то невразумительное
Я что-то делаю не так ? Похоже собственно до JSON достучаться не удается, параметры и ссылка игнорируются и я просто получаю get-запросом (хотя делаю post) заглавную страницу сайта
Что делать и кто виноват ?

user1C 19.10.2018 09:41

вероятно
[b]Ит[/b]ПараметрыЗапроса = Новый Структура;
[b]Ит[/b]ПараметрыЗапроса.Вставить("request",ПараметрыЗапроса);
Стр = ЗначениеВJSON([b]Ит[/b]ПараметрыЗапроса);

Moralny 19.10.2018 10:09

Да, и это тоже
Но заработало только после того как
Запрос = Новый HTTPЗапрос("/crm/api/v1/client/list/?api_key=**********************************");


Текущее время: 07:59. Часовой пояс GMT +3.