Имя: Пароль:
1C
 
При HTTP запросе дает ошибку 400
0 KuznecovvIvan
 
21.11.22
14:07
Пытаюсь сделать JSON запрос, он выдает ошибку 400. Вроде все правильно сделал. Сервер поднял на IIS. Причем если открываю через браузер, то обращение происходит к HTTP-сервису. Но если пытаюсь сделать этим кодом, то ошибка 400.  Высылаю код

Функция ОтправитьHTTPЗапрос(СтруктураОтправки)
        Логин = СтруктураОтправки.Логин;
    Пароль = СтруктураОтправки.Пароль;        
    Сервер = СтруктураОтправки.Сервер;     
    Порт = СтруктураОтправки.Порт;
    АдресРесурса = СтруктураОтправки.АдресРесурса;
    СтрокаJSON =  СтруктураОтправки.СтрокаJSON;
    МетодСервиса = СтруктураОтправки.МетодСервиса;
    
    #Если Клиент  Тогда
        SSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Выбирать),Новый СертификатыУдостоверяющихЦентровWindows());
    #Иначе
        SSL = Новый ЗащищенноеСоединениеOpenSSL(Неопределено,Неопределено);
    #КонецЕсли
    
    HTTPСоединение = Новый HTTPСоединение(Сервер,Порт,Логин,Пароль,,,SSL);// // не забыть вернуть Кузнецов ИВ
    
    HTTPЗапрос = новый HTTPЗапрос(МетодСервиса);
    HTTPЗапрос.АдресРесурса = АдресРесурса;
    HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8 ,ИспользованиеByteOrderMark.НеИспользовать);//
    HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json-rpc");
    
    //HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
    ДокументJSON = HTTPЗапрос.ПолучитьТелоКакСтроку();
    ваплво = ПрочитатьСтрокуJSON(ДокументJSON);    
    
    Попытка
        РезультатВыполнения = HTTPСоединение.ВызватьHTTPМетод(МетодСервиса,HTTPЗапрос);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;  

    Возврат РезультатВыполнения;

КонецФункции
1 Irbis
 
21.11.22
14:10
400 — "плохой запрос", ошибка, возможно, в синтаксисе и сервер ни бельмеса ни ферштейн.
2 KuznecovvIvan
 
21.11.22
14:13
(1) Скажем так в какую сторону нужно смотреть? Возможно не правильно сформирован JSON запрос. Или что-то возможно в настройках не так тика в адресе ресурса или в не правильно методе сервиса?
3 KuznecovvIvan
 
21.11.22
14:14
(1) Просто я редко работаю с HTTP-сервисами, задача не моя, по наследству осталось. Поэтому особо не понимаю что значит может быть ошибка в синтаксисе
4 Галахад
 
гуру
21.11.22
14:28
Так непонятно, что в переменных. Возможно в данных проблема.
И что это за мусор:
  ДокументJSON = HTTPЗапрос.ПолучитьТелоКакСтроку();
  ваплво = ПрочитатьСтрокуJSON(ДокументJSON);
5 KuznecovvIvan
 
21.11.22
14:33
(4) Да это мусор в переменных следующее:

    СтруктураОтправки = новый Структура;
    СтруктураОтправки.Вставить("Логин", ""); //
    СтруктураОтправки.Вставить("Пароль", "");
    СтруктураОтправки.Вставить("Сервер","192.168.65.140");  
    СтруктураОтправки.Вставить("Порт", 443);
    СтруктураОтправки.Вставить("АдресРесурса", "https://192.168.65.140/Working_KuznecovIV/hs/APIService/V1/SoglasovanieObmenDO");        
    СтруктураОтправки.Вставить("СтрокаJSON", ДокументJSON);
    СтруктураОтправки.Вставить("МетодСервиса", "POST");

Если я пытаюсь адрес ввести в браузере в поисковую строку, то он выполняет метод GET HTTP-сервиса. И авторизация там норм проходит
6 Irbis
 
21.11.22
14:33
(2) Всё смотреть, вплоть до того как ответит сервис если сунуть запрос в строку браузера. Иногда лишний слэш или ещё какой мусорный символ мешает.
7 Irbis
 
21.11.22
14:34
Имхается что в адресе ресурса толь IP должен остаться, остальное в метод перехать должно
8 KuznecovvIvan
 
21.11.22
14:34
(6) Понял, спасибо. Сейчас буду пробовать
9 Галахад
 
гуру
21.11.22
14:38
(7) +1. Протокол тоже не нужно указывать. Достаточно 192.168.65.140
И по авторизации, скорее всего не пройдет. В браузере возможно кто-то пароль уже вводил и теперь он в кэше.
10 Галахад
 
гуру
21.11.22
14:40
(9) + 9 Т.е. наоборот из адреса ресурса нужно выкинуть все что до имени базы.
11 KuznecovvIvan
 
21.11.22
15:02
(10) Спасибо большое) Да именно в этом было дело) /Working_KuznecovIV/hs/APIService/V1/SoglasovanieObmenDO оставил так, все заработало) Спасибо)
12 Галахад
 
гуру
21.11.22
15:13
(11) Пожалуйста. )