Вход | Регистрация


1С:Предприятие ::

Метки: 

Ошибка 400 при работе с HTTPs соединением

Я
   Paradox
 
28.10.17 - 12:37
Добрый день!

Платформа: 8.3.10.2299.

До перехода на HTTPs, обращался к веб-сервису без проблем по HTTP соединению (авторизация доменная):

HTTP = Новый HTTPСоединение(ИмяСервера, Порт, , , , , , Истина);

Когда сделали HTTPs, то доделал строку соединения до вида:

HTTP = Новый HTTPСоединение(ИмяСервера, 443, , , , , Новый ЗащищенноеСоединениеOpenSSL(), Истина);

Методы веб-сервиса и структура базы веб-сервиса не менялась. Просто администраторы сделали HTTPs.

Теперь при выполнении PUT-запроса получаю ошибку 400. Подскажите, пожалуйста, в чем может быть дело? Проблема на стороне веб-сервиса или я что-то не правильно указал в HTTPСоединении?

Текст ошибки:

Единицы измерения; {ВнешняяОбработка.ВыгрузкаВВебСервис.Форма.Форма.Форма(307)}: Ошибка выгрузки. Код ошибки: 400

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/stri... »»">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Verb</h2>
<hr><p>HTTP Error 400. The request verb is invalid.</p>
</BODY></HTML>
 
 
   Филиал-msk
 
1 - 28.10.17 - 13:33
(0) > The request verb is invalid

Не надо в него PUT, не хочет он этого.
   Paradox
 
2 - 28.10.17 - 14:33
(1) а ведь до этого (до перехода на HTTPs) именно PUT-запрос происходил из 1С в сервис и все отлично было.

К администратору надо обратиться?)
   Филиал-msk
 
3 - 28.10.17 - 14:40
(2) Не знаю, что у вас там под веб-сервисом понимается, но SOAP, он какбе вообще-то POST подразумевает.

Пытай админов, почему типы запросов стали по разному обрабатываться. А то сейчас окажется что, например, перед аппликейшн сервером возник какой нить энджинх для поддержки SSL со своими представлениями о мире.
   Paradox
 
4 - 28.10.17 - 14:46
(3) не совсем понимаю в веб-технологиях, но разработчики веб-сервиса сделали сервис не в 1С. Сказали выгружать данные в сервис PUT-запросами, а тело запроса в формате JSON.

До HTTPs, все отлично работало. Вчера перевели на защищенное соединение и пипец...походу надо копать именно сам сервис, что-то в нем случилось.
   Paradox
 
5 - 28.10.17 - 14:50
(1) The request verb is invalid
Могу я судить по этому сообщению, что 1С устанавливает соединение защищенное и тут уже сам сервер, на котором поднят веб-сервис отвергает мой PUT-запрос?
   Филиал-msk
 
6 - 28.10.17 - 15:56
(5) Да, SSL работает. Ты успешно попадаешь на веб сервер со свои непристойным предложением пута.
   Филиал-msk
 
7 - 28.10.17 - 15:59
(4) Скорей всего одновременно с накатыванием SSL чтойто порубили во избежание или по недосмотру. Одмины могут.
   sitex
 
8 - 28.10.17 - 17:02
(5)А вы точно тело в json отправляете ? попробуйте на этот сервис отправить PUT запрос  через Postman.
   Филиал-msk
 
9 - 28.10.17 - 17:27
(8) Postman отстой, пользуйте Fiddler
   sitex
 
10 - 28.10.17 - 17:29
(9) Аргументируй . Если не умеешь им пользоваться это не означает что продукт плох.
 
 Рекламное место пустует
   Paradox
 
11 - 28.10.17 - 17:46
по ссылке, которую предоставили разработчики веб-сервиса, открывается Swagger UI, где я могу сделать GET, PUT запросы.
Вот через этот интерфейс PUT нормально выполняется.
   Филиал-msk
 
12 - 28.10.17 - 17:49
(10) Требует дрочки вприсядку при организации тестирования. Продукт плох.
   sitex
 
13 - 28.10.17 - 17:49
(12) ну как я и думал аргумент весомый.
   sitex
 
14 - 28.10.17 - 17:52
(11) Пробовали "WinHttp.WinHttpRequest.5.1" ?
   Филиал-msk
 
15 - 28.10.17 - 17:52
(11) Интерфейс на https? Ты точно в нужный сервер попадаешь своим начальным CONNECT на https?
   Paradox
 
16 - 28.10.17 - 17:54
(11) не пробовал
   Филиал-msk
 
17 - 28.10.17 - 17:55
(13) А ты ценитель, однако.
   Paradox
 
18 - 28.10.17 - 17:55
(12) это как понять? Я делаю в 1С, на HTTP работало без проблем. После перехода на HTTPs в коде добавил только объявление
Новый ЗащищенноеСоединениеOpenSSL()
   sitex
 
19 - 28.10.17 - 17:57
(17) Фи Фи фи забыл добавить.
   Филиал-msk
 
20 - 28.10.17 - 17:57
(16) Попробуй. Там дело в том, что при установке ssl сначала вылетает CONNECT, а твой PUT пойдет уже внутри канала. Если сервер CONNECT не ожидает, ты получишь такую же ошибку.
Вдруг он ждет SSL на 8443 каком нибудь.
   Paradox
 
21 - 28.10.17 - 18:00
Вот сама процедура отправки запроса. Буду пробовать win http.

    ИмяСервера     = "*****";
    Порт         = 443;
    ИмяМетода     = "***" + ИмяМетода;
    
    HTTP = Новый HTTPСоединение(ИмяСервера, Порт, , , , , Новый ЗащищенноеСоединениеOpenSSL(), Истина); 
    
    ЗаголовокЗапросаHTTP = Новый Соответствие();
    ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json-patch+json");
    ЗапросPUT = Новый HTTPЗапрос(ИмяМетода + "/" + РезультатЗапроса.Объекты.Guid1c, ЗаголовокЗапросаHTTP);
     
    
    ЗапросPUT.УстановитьИмяФайлаТела(ПутьКФайлу);
    Возврат HTTP.Записать(ЗапросPUT);
   sitex
 
22 - 28.10.17 - 18:03
(20) Я думаю разрабы сообщили бы что у них запросы завернуты на другой порт.
   sitex
 
23 - 28.10.17 - 18:11
(21) Как вариант вызвать на прямую HTTP.ВызватьHTTPМетод("PUT",ЗапросPUT);
   Paradox
 
24 - 28.10.17 - 18:27
(23) Капец...заработало...в чем разница между Записать() и ВызватьHTTPМетод()

во втором случае работает, а в первом нет.
   Paradox
 
25 - 28.10.17 - 18:28
(23) и при этом в "PUT " - надо обязательно пробел...
   sitex
 
26 - 28.10.17 - 18:29
(24) Значит что то в 1 случае в заголовках сто то не то. сравните.
   Paradox
 
27 - 28.10.17 - 18:31
(26) так заголовки такие же остаются...или что-то другое имеется ввиду?

 ЗаголовокЗапросаHTTP = Новый Соответствие();
    ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json-patch+json");
   sitex
 
28 - 28.10.17 - 18:34
(27) Вообще хорошо бы на стороне сервера узнать что в логах падает в первом случае. Спросите у разрабов. Может в 1 случае там вообще не PUT а что то другое.
   sitex
 
29 - 28.10.17 - 18:38
(25) НА счет этого я задавал вопрос в поддержку , внятного ответа так и не получил в чем разница. Если кто знает в чем разница с пробелом или нет.



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует