0
Slon747
15.05.19
✎
15:01
|
Есть работающая команда curl для передачи методом POST:
curl -H "Content-Type: application/json" -H "x-s-k: 1cTestKey" -H "Accept: application/json" -d '[{"uid":"9af671c2-3fbe7-1e8f-3085a99d1f35","active":true,"i18n":{"ua":{"name":"Color 2"},"ru":{"name":"Цвет"}}}]'
Тут передается:
1. Ключ API "x-s-k" со значением "1cTestKey"
2. Строка JSON
Куда передается:
Пробую сделать то же самое в 1С:
//читаем JSON из файла
ФайлJSON= Новый ЧтениеТекста("C:\post.json", КодировкаТекста.UTF8);
СтрокаJSON = ФайлJSON.Прочитать();
//создаем HTTPS-соединение
ssl = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Выбирать), Новый СертификатыУдостоверяющихЦентровWindows());
HTTPСоединение = Новый HTTPСоединение("mydomain.com",,,,,5, ssl);
HTTPЗапрос = Новый HTTPЗапрос("/api/v1/catalog/categories");
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
HTTPЗапрос.Заголовки.Вставить("x-s-k", "1cTestKey");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Сообщить("Код результата: " + Ответ.КодСостояния);
Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8"));
Получаю ответ "{"status":false}", т.е. совсем не то, что через curl.
Не подскажете, что не правильно?
|
|
5
Slon747
15.05.19
✎
15:20
|
(4) но в файле json у меня был верный, для categories.
А вот так заработал:
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type","application/json");
Заголовки.Вставить("Accept","application/json");
Заголовки.Вставить("x-s-k","1cTestKey");
Попытка
Соединение = Новый HTTPСоединение("mydomain.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Исключение
Сообщить("Ошибка соединения с сайтом");
КонецПопытки;
Если НЕ Соединение = Неопределено Тогда
Попытка
ФайлДанных = Новый ЧтениеТекста("C:\post.json", КодировкаТекста.UTF8);
Строка = ФайлДанных.Прочитать();
HTTPЗапрос = Новый HTTPЗапрос("/api/v1/catalog/categories",Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(Строка);
Ответ = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
ОтветВВидеСтроки = "";
ОтветВВидеСтроки = Ответ.ПолучитьТелоКакСтроку();
Сообщить(ОтветВВидеСтроки);
Исключение
Сообщить("Ошибка соединения с сайтом");
КонецПопытки;
КонецЕсли;
|
|