Имя: Пароль:
1C
 
Post запрос из Postman - 200, из 1С - 404
, ,
0 Sj
 
11.11.21
19:13
Доброе время суток!

   Делаю Post запрос из Postman - получаю 200.
   Из 1С - не 200.

Смотрю в Fiddler что уходит.
Из Postman:
POST https://xn.xn/api/orders/update HTTP/1.1
Content-Type: application/json
User-Agent: PostmanRuntime/7.28.4
Accept: */*
Postman-Token: aa2d90bd-2c1d-4bc3-9e2c-c392fa93ba24
Host: xn.xn
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 33

{
"id_order": 1,
"status": 2
}

Из 1С:
POST https://xn.xn/api/orders/update HTTP/1.1
Host: xn.xn
Accept: */*
Connection: keep-alive
Accept-Encoding: gzip, deflate, br
User-Agent: PostmanRuntime/7.28.4
Content-Type: application/json
Content-Length: 36

{
"id_order": 1,
"status": 2
}

В чем может быть проблема?
Может быть в том, что в 1С Content-Length: 36 ? При том, что СтрДлина(Тело) возвращает 33.
1 pechkin
 
11.11.21
19:16
Bom?
2 Ёпрст
 
11.11.21
19:18
BOM
3 Ёпрст
 
11.11.21
19:18
а ёпт, олени не кормлены
4 Sj
 
11.11.21
19:24
а как убрать?
5 Ёпрст
 
11.11.21
19:46
ИспользованиеByteOrderMark.НеИспользовать
6 Ёпрст
 
11.11.21
19:47
+ в УстановитьТелоИзСтроки 3 параметр
7 бегинер
 
11.11.21
19:54
ну как вариант у тебя ответ сжат gzip - вот 1с его не понимает, нужно его ungzip
у меня такое было, в постмане все норм - там на лету он определяет сжатие и декодирует

так как штатно 1С gzip не может разархивировать, нашел бесплатную dll (дублирую во вложении) которую регим через regsvr32 и используем как COM Обьект, она соотв. может разарх. gzip

http://www.xstandard.com/en/documentation/xgzip/

вот мой код для получения ответа, у меня сервер ответ в gzip выдавал

Соединение = Новый HTTPСоединение(ссылка_на_rest_api,,,,,таймаут_rest);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", логин_пароль_base64);
Заголовки.Вставить("Content-type", "application/json");
Заголовки.Вставить("Accept-Encoding", "gzip");
Запрос = Новый HTTPЗапрос(приписка_к_ссылке,Заголовки);
Запрос.УстановитьТелоИзСтроки(строка_тела,"CESU-8");
  попытка;
    Результат=Соединение.ОтправитьДляОбработки(Запрос);
  исключение;    
    сообщить("нет соединения или ответа с сервером ");
  конецпопытки;
ДвоичныеДанные = Результат.получитьТелоКакДвоичныеДанные();
ДвоичныеДанные.Записать(путь+"файл_gzip.zip");
архиватор=Новый COMОбъект("XStandard.GZip");
архиватор.Decompress (путь+"файл_gzip.zip", путь+"распакованный_файл_gzip");
архиватор=неопределено;
Файл = Новый ЧтениеТекста(путь+"распакованный_файл_gzip",кодировкатекста.UTF8);
ВесьФайлОднойСтрокой = Файл.Прочитать();
Файл.Закрыть();
8 acht
 
11.11.21
19:57
(7) 404 это ну вот совсем не про сжатие, которое 1С не понимает.
9 acht
 
11.11.21
19:59
10 бегинер
 
11.11.21
20:09
(9) спасибо пригодится, когда вопрос у меня был через вк сделал
11 Sj
 
11.11.21
20:10
(5) спасибо! Помогло!)