Имя: Пароль:
1C
1С v8
https запрос и сваггер
0 gosn1ck
 
23.01.18
12:54
Добрый день.
дали ссылку на сваггер, в котором можно воспроизвести http запросы к сервису, см скрины

[url=https://radikal.ru][img]https://a.radikal.ru/a11/1801/ef/99b5b72f9154.png[/img][/url]
[url=https://radikal.ru][img]https://a.radikal.ru/a14/1801/29/659d8acb4259.png[/img][/url]

а как это воспроизвести на 1с? делаю так но получаю ошибку
Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка работы с Интернет:   Failure when receiving data from the peer

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Запрос = HTTPЗапросКСервисуБиллинга();
    Соединение = HTTPСоединениеБиллинга();
    
    Попытка
        Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    Исключение
        ЗарегистрироватьОшибкуСервиса(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
    Если Ответ.КодСостояния <> 200 Тогда
        ЗарегистрироватьОшибкуСервиса("Ошибка");
        Возврат;
    КонецЕсли;
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(ТелоОтвета);
    СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();    
    
КонецПроцедуры

Функция HTTPЗапросКСервисуБиллинга()
    
    ТекстЗапроса = "/api/Auth/";    

    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type", "application/json");
    Заголовки.Вставить("Accept", "application/json");
    
    Запрос = Новый HTTPЗапрос(ТекстЗапроса, Заголовки);
    
    СтруктураЗапроса = Новый Структура;
    СтруктураЗапроса.Вставить("login", "ХХХ");
    СтруктураЗапроса.Вставить("PasswordMd5", "ХХХ");
    СтруктураЗапроса.Вставить("Role", "ХХХ");
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, СтруктураЗапроса);
    
    ТекстJSON = ЗаписьJSON.Закрыть();
    
    Запрос.УстановитьТелоИзСтроки(ТекстJSON);    
    
    Возврат Запрос;
    
КонецФункции

Функция HTTPСоединениеБиллинга()
    
    АдресСервера = "ХХХ.ru";    
    Таймаут = 10;
    
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровОС);
    Возврат Новый HTTPСоединение(АдресСервера, 444, , , , Таймаут, ЗащищенноеСоединение);
    
КонецФункции

что я делаю не так?
1 Вафель
 
23.01.18
13:00
попробуй просто
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL()
2 gosn1ck
 
23.01.18
13:38
не помогло, пробовал так уже
3 sitex
 
naïve
23.01.18
14:19
(0) Сложно сказать что у тебя не так. Может у тебя тело для отправки там и не в JSON вообще. Пробуй winhttp.winhttprequest возможно он по может.
4 Lexey_
 
23.01.18
14:27
(0) попробуй Content-type application/x-www-form-urlencoded
5 gosn1ck
 
23.01.18
15:43
нашел утилиту postman, в ней сделал вот так https://b.radikal.ru/b23/1801/8e/f71e2ea472f3.png и получил положительный ответ.
в заголовках только
Заголовки.Вставить("Content-Type", "application/json");

что меня тут напрягло, в утилите нужно снять галку SSL certificate validation. может быть в сертификате дело?
6 gosn1ck
 
23.01.18
18:15
дело оказалось в проксе, код выше рабочий