| 
    
        
     
     | 
    
  | 
При 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) Пожалуйста. )     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |