Как правильно написать HTTP-запрос с параметрами?
Пишу обработку получения итоговых сумм онлайн-касс за день с сервера Такскома. Такском прислал документацию по API. Застопорился на функции получения списка касс.
Описание из документации по API:
HTTP-запрос
HTTP-Method: GET
Адрес запроса (URI): https://<server>.taxcom.ru/API/KKTList?id={0}
Параметры запроса:
id - идентификатор торговой точки
Заголовки запроса:
Session-Token - Маркер временного доступа (Autorization token)
Content-Type - application/json
HTTP-ответ: json-ответ со списком ККТ.
Пишу код:
Получаю такой результат:
09.09.2017 23:26:51: Получение списка касс.
Код состояния: 400
09.09.2017 23:26:52: Получен список касс.
{"Details":"The ИД торговой точки field is required.","AdditionalData":null,"ApiErrorCode":2101,"CommonDescription":"Некорректный формат запроса","StatusCode":400}
Что не так? Как правильно задать параметр, чтобы отработало корректно?
Корректным ответом считается ответ с кодом 200.
Описание из документации по API:
HTTP-запрос
HTTP-Method: GET
Адрес запроса (URI): https://<server>.taxcom.ru/API/KKTList?id={0}
Параметры запроса:
id - идентификатор торговой точки
Заголовки запроса:
Session-Token - Маркер временного доступа (Autorization token)
Content-Type - application/json
HTTP-ответ: json-ответ со списком ККТ.
Пишу код:
Ресурс = "API/KKTList";
ИДТочки = "{123456}";
Соед = Новый HTTPСоединение(Сервер, , , , , , Новый ЗащищенноеСоединениеOpenSSL);
Запр = Новый HTTPЗапрос(Ресурс);
Запр.АдресРесурса = Ресурс;
Запр.Заголовки.Вставить("id", ИДТочки);
Запр.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Запр.Заголовки.Вставить("Session-Token", Токен);
Попытка
ФайлОтвет = ПолучитьИмяВременногоФайла("txt");
Ответ = Соед.Получить(Запр, ФайлОтвет);
Сообщить("Код состояния: " + Строка(Ответ.КодСостояния));
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.Прочитать(ФайлОтвет, КодировкаТекста.UTF8);
ТекстОтвет = ТекстДок.ПолучитьТекст();
Если Ответ.КодСостояния = 200 Тогда
ч = 0;
КонецЕсли;
Сообщить(Строка(ТекущаяДата()) + ": Получен список касс.");
Сообщить(ТекстОтвет);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
ПоказатьПолучаю такой результат:
09.09.2017 23:26:51: Получение списка касс.
Код состояния: 400
09.09.2017 23:26:52: Получен список касс.
{"Details":"The ИД торговой точки field is required.","AdditionalData":null,"ApiErrorCode":2101,"CommonDescription":"Некорректный формат запроса","StatusCode":400}
Что не так? Как правильно задать параметр, чтобы отработало корректно?
Корректным ответом считается ответ с кодом 200.
Найденные решения
А ларчик просто открывался:
И ответ:
{"reportDate":"2017-09-10T03:59:27.6315289+03:00","counts":{"recordCount":1,"recordFilteredCount":1,"recordInResponceCount":1},"records":[{"id":654321,"name":"ШТРИХ-МПЕЙ-Ф","kktRegNumber":"0123456789012345","kktFactoryNumber":"9876543210987654","fnFactoryNumber":"1234554321123455","outlet":{"id":123456,"name":"012345,г.Москва,ул.Улицева ,д.1000,кор.500.","code":null,"address":""}}]}
Ресурс = "API/KKTList";
ИДТочки = "{123456}";
Соед = Новый HTTPСоединение(Сервер, , , , , , Новый ЗащищенноеСоединениеOpenSSL);
Запр = Новый HTTPЗапрос(Ресурс);
Запр.АдресРесурса = Ресурс + "?id=" + ИДТочки;
Запр.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Запр.Заголовки.Вставить("Session-Token", Токен);
Попытка
ФайлОтвет = ПолучитьИмяВременногоФайла("txt");
Ответ = Соед.Получить(Запр, ФайлОтвет);
Сообщить("Код состояния: " + Строка(Ответ.КодСостояния));
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.Прочитать(ФайлОтвет, КодировкаТекста.UTF8);
ТекстОтвет = ТекстДок.ПолучитьТекст();
Если Ответ.КодСостояния = 200 Тогда
ч = 0;
КонецЕсли;
Сообщить(Строка(ТекущаяДата()) + ": Получен список касс.");
Сообщить(ТекстОтвет);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
ПоказатьИ ответ:
{"reportDate":"2017-09-10T03:59:27.6315289+03:00","counts":{"recordCount":1,"recordFilteredCount":1,"recordInResponceCount":1},"records":[{"id":654321,"name":"ШТРИХ-МПЕЙ-Ф","kktRegNumber":"0123456789012345","kktFactoryNumber":"9876543210987654","fnFactoryNumber":"1234554321123455","outlet":{"id":123456,"name":"012345,г.Москва,ул.Улицева ,д.1000,кор.500.","code":null,"address":""}}]}
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
А ларчик просто открывался:
И ответ:
{"reportDate":"2017-09-10T03:59:27.6315289+03:00","counts":{"recordCount":1,"recordFilteredCount":1,"recordInResponceCount":1},"records":[{"id":654321,"name":"ШТРИХ-МПЕЙ-Ф","kktRegNumber":"0123456789012345","kktFactoryNumber":"9876543210987654","fnFactoryNumber":"1234554321123455","outlet":{"id":123456,"name":"012345,г.Москва,ул.Улицева ,д.1000,кор.500.","code":null,"address":""}}]}
Ресурс = "API/KKTList";
ИДТочки = "{123456}";
Соед = Новый HTTPСоединение(Сервер, , , , , , Новый ЗащищенноеСоединениеOpenSSL);
Запр = Новый HTTPЗапрос(Ресурс);
Запр.АдресРесурса = Ресурс + "?id=" + ИДТочки;
Запр.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Запр.Заголовки.Вставить("Session-Token", Токен);
Попытка
ФайлОтвет = ПолучитьИмяВременногоФайла("txt");
Ответ = Соед.Получить(Запр, ФайлОтвет);
Сообщить("Код состояния: " + Строка(Ответ.КодСостояния));
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.Прочитать(ФайлОтвет, КодировкаТекста.UTF8);
ТекстОтвет = ТекстДок.ПолучитьТекст();
Если Ответ.КодСостояния = 200 Тогда
ч = 0;
КонецЕсли;
Сообщить(Строка(ТекущаяДата()) + ": Получен список касс.");
Сообщить(ТекстОтвет);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
ПоказатьИ ответ:
{"reportDate":"2017-09-10T03:59:27.6315289+03:00","counts":{"recordCount":1,"recordFilteredCount":1,"recordInResponceCount":1},"records":[{"id":654321,"name":"ШТРИХ-МПЕЙ-Ф","kktRegNumber":"0123456789012345","kktFactoryNumber":"9876543210987654","fnFactoryNumber":"1234554321123455","outlet":{"id":123456,"name":"012345,г.Москва,ул.Улицева ,д.1000,кор.500.","code":null,"address":""}}]}
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот