|
ошибка 400 bad request при выполнении POST запроса | ☑ | ||
---|---|---|---|---|
0
Vataeka
20.09.23
✎
10:28
|
Добрый день!
Выполняю запрос в POSTMAN все нормально, такой же запрос переношу в 1С возникает ошибка 400 bad request. Перепробовала разные варианты кодировок, формировать тело запроса через Запись = Новый ЗаписьJSON; ничего не работает. В чем может быть проблема? Заголовки = Новый Соответствие(); Заголовки.Вставить("Content-Type", "application/json"); Заголовки.Вставить("Connection", "keep-alive"); Заголовки.Вставить("Accept", "*/*"); Заголовки.Вставить("Authorization", "Basic " + ПолучитьBase64СтрокуИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзСтроки(Пользователь +":" +Пароль))); Попытка ЗащитаСоединения = Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровWindows()); HTTP_Соединение = Новый HTTPСоединение(АдресЗапроса,443,,,,,ЗащитаСоединения); ЗапросHTTP = Новый HTTPЗапрос(ИмяМетода,Заголовки); Исключение Сообщить("Не удалось связаться с сервером"); Сообщение = Новый СообщениеПользователю; Сообщение.Текст = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); Сообщение.Сообщить(); возврат; КонецПопытки; СтрокаJS = "{ | ""request"": { | ""payload"": { | ""request_id"": ""0bde2079-eded-11ea-952d-00155d01aa22"", | ""document_count"": 1, | ""ags_type"": ""02"", | ""legal_basis"": { | ""code"": ""01"", | ""lack_doc_sign"": ""1"" | }, | ""ags_requests"": [ | { | ""fl"": { | ""surname"": ""Иванов"", | | ""name"": ""Иван"", | ""patronymic"": ""Иванович"", | ""birthdate"": ""1996-05-10"", | ""name_changed"": ""1"" | }, | ""doc_id"": ""0bde2079-eded-11ea-952d-00155d01aa21"" | } | ] | } | } |}"; ЗапросHTTP.УстановитьТелоИзСтроки(СтрокаJS,"CESU-8",ИспользованиеByteOrderMark.НеИспользовать); ФайлОтвета = ПолучитьИмяВременногоФайла("json"); HTTP_Соединение.ОтправитьДляОбработки(ЗапросHTTP, ФайлОтвета); //HTTP_Соединение.ВызватьHTTPМетод("POST", ЗапросHTTP, ФайлОтвета); Строка = ЗапросHTTP.ПолучитьТелоКакСтроку(); Ответ = Новый ТекстовыйДокумент(); Ответ.Прочитать(ФайлОтвета, КодировкаТекста.UTF8); ТекстОтвета = Ответ.ПолучитьТекст(); |
|||
1
mikecool
20.09.23
✎
10:41
|
проверяй, что в адресе, и что в имени метода
|
|||
2
Vataeka
20.09.23
✎
10:46
|
я копирую адрес и имя метода из постмана
|
|||
3
elCust
20.09.23
✎
11:01
|
Необходимо так делать:
Ответ = HTTP_Соединение.ОтправитьДляОбработки(ЗапросHTTP, ФайлОтвета); Строка = Ответ.ПолучитьТелоКакСтроку(); |
|||
4
Donkey_hot
20.09.23
✎
11:08
|
(3) Зачем файл ответа, если планируется получать ответ как строку?
|
|||
5
Donkey_hot
20.09.23
✎
11:08
|
(0) Сам JSON на валидность проверяли?
|
|||
6
elCust
20.09.23
✎
11:09
|
(4) Скопировал строку ТС.
|
|||
7
Lite777888
20.09.23
✎
11:12
|
(0) WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.SetRequestHeader("Authorization",КлючАПИ); И тд Попробовать через вин реквест |
|||
8
Vataeka
20.09.23
✎
11:13
|
(3) Сделала без файла ответа, получаю в Строка = "400 Bad Request", в ответ.КодСостояния = 400.
|
|||
9
Donkey_hot
20.09.23
✎
11:13
|
(6) В любом случае, до получения тела ТСу надо еще дожить, у него код 400, ничего интересного в теле он не найдет.
Мне сильно не нравится, что везде указана куча необязательных параметров. Но поскольку адреса, скопированного из постмана мы не знаем, сказать точнее затруднительно. |
|||
10
Vataeka
20.09.23
✎
11:14
|
(7) Никогда такого не видела, буду пробовать. Только вопрос: а как туда тело запроса засунуть?
|
|||
11
Donkey_hot
20.09.23
✎
11:14
|
(7) Лет 100 уже такое не использую. Зачем ком, если http внутри платформы?
|
|||
12
Donkey_hot
20.09.23
✎
11:15
|
(10) Не надо это Вам. Адрес ресурса - это секретная информация?
|
|||
13
Vataeka
20.09.23
✎
11:15
|
(9) адрес не могу скинуть, заголовки скопированы из постмана, пробовала с разными - результат один.
|
|||
14
Donkey_hot
20.09.23
✎
11:16
|
(13) Ок, он хотя бы http или https (в постмане)?
|
|||
15
Vataeka
20.09.23
✎
11:19
|
(14) https
|
|||
16
Lite777888
20.09.23
✎
11:19
|
WinHttp.Open(ВидЗапроса,"https://" + СерверДляЗапроса + "/"+ Метод + "/" );
|
|||
17
Lite777888
20.09.23
✎
11:23
|
(11) Не со всеми апи работает , нттп соединение и запрос как практика показывает
|
|||
18
Donkey_hot
20.09.23
✎
11:25
|
Ну если мы все-таки занимаемся лечением даже не по фотографии, а без нее, то я бы попробовал для начала:
1) убрать всякий хлам из конструкторов (типа Новый Сертификаты...., порта 443, CESU-8, ByteOrderMark и прочего) 2) в заголовках оставить только Content-type (и Authorization, если он действительно необходим, но скопировать значение в явном виде из постмана) 3) Проверить-таки ваш JSON в любом валидаторе 4) Убедиться, что правильно указали секретный адрес(Хост должен быть без указания протокола и слэшей, например "www.example.ru", а ресурс, наоборот, начинаться и, чаще всего, заканчиваться, слэшем, например "/api/my_method/" |
|||
19
Donkey_hot
20.09.23
✎
11:27
|
(17) Не сталкивался, хотя интеграций сделал достаточно много. Думаю, в данном кейсе проблема не в этом.
|
|||
20
Donkey_hot
20.09.23
✎
11:29
|
(18) Еще момент, постман и клиент/сервер с которого отправляете запрос на одной машине?
|
|||
21
mikecool
20.09.23
✎
11:57
|
как выглядит адрес в 1с?
|
|||
22
Donkey_hot
20.09.23
✎
12:00
|
(21) Сие тайна...
|
|||
23
Garykom
20.09.23
✎
12:16
|
АдресЗапроса - имя сервера без http:// ?
ИмяМетода - начинается с / ? |
|||
24
Lite777888
20.09.23
✎
12:27
|
(23) адрес типа Сайт.ру ,метод =имя Метода
|
|||
25
Lite777888
20.09.23
✎
12:29
|
ВидЗапроса -"GET" "POST"
|
|||
26
Vataeka
20.09.23
✎
13:50
|
(16) Спасибо Вам огромное! Благодаря вашему совету получила вменяемый ответ! У меня есть еще вопросы: что делать с этим Ком объектом, его нужно как-то закрывать?
|
|||
27
Vataeka
20.09.23
✎
14:05
|
Еще мне нужно скачать логи запроса, тут я уже использую "GET" и другой метод. Как это сделать через COM?
Вот, что нашла если средствами платформы пользоваться: Соединение = Новый HTTPСоединение("static.1c.ru"); Запрос = Новый HTTPЗапрос("/images/logo.png"); ПутьДляСохранения = "C:\1.png"; //записываем на диск, так Ответ = Соединение.Получить(Запрос, ПутьДляСохранения); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |