Имя: Пароль:
1C
 
Помогите с POST-запросом. В postman - ОК, в 1С - ошибка.
, ,
0 nemoxp
 
04.10.24
14:51
Пытаюсь написать в 1С запрос:

ПараметрыПост = "------WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""base64Image""

|data:[тут строка base64 https://ocr.space/text/base64string1.txt ]
|------WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""language""
|
|eng
|------WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""isOverlayRequired""
|
|false
|------WebKitFormBoundary7MA4YWxkTrZu0gW--";
    
    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Option(2,"utf-8");
    WinHttp.Open("POST","https://api.ocr.space/parse/image      ,0);
    WinHttp.SetRequestHeader("Host", "api.ocr.space");
    WinHttp.SetRequestHeader("apikey", "K83633147488957");
    WinHttp.SetRequestHeader("Content-Length", 4227);
    WinHttp.setRequestHeader("Content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");        
    WinHttp.Send(ПараметрыПост);
    ТекстОтвета = WinHttp.ResponseText();

API в 1с выдает ошибку что не может распознать расширение. Структура параметров взята из postman при генерации в HTTP.

Формирую в https://web.postman.co/ все работает. Значит проблема не в запросе, может 1С что-то не то делает или нужно как-то по другому писать в 1С? Вот curl для загрузки в postman:


curl --location 'https://api.ocr.space/parse/image' \
--header 'apikey: K83633147488957' \
--form 'base64Image="[тут строка base64 https://ocr.space/text/base64string1.txt ]" \
--form 'language="eng"' \
--form 'isOverlayRequired="false"'
1 oleg_km
 
04.10.24
13:30
Fiddler ом сравни
2 nemoxp
 
04.10.24
13:33
(1) Это типа такая программа https://www.telerik.com/fiddler ?
3 arsik
 
гуру
04.10.24
14:02
(0) Это издевательство какое то над 1С. Зачем вам COM для отправки http запросов?
Ну если уж совсем компетенций нет, то воспользоваться очередным слоем абстракции из https://github.com/vbondarevsky/Connector
4 Сергиус
 
04.10.24
14:02
(0)Откуда вы берёте тело?
5 Dzenn
 
гуру
04.10.24
14:13
Используйте встроенные инструменты 1С для работы с HTTP — HTTPСоединение, HTTPЗапрос и прочие. Лично я не вижу ни одной причины, по которой их нельзя использовать. Единственное, что 1С не умеет, это отправлять TCP-пакеты на сокеты, но тут явно не ваш случай.
6 nemoxp
 
04.10.24
14:49
(3) Дело не в компитенциях, я хочу добиться стабильного результата из 1с. Испробовал все: JSON, HTTPСоединение... Сейчас остановился на COM, потому что Постман конвертирует в HTTP и это у него работает, этот запрос можно просто скопировать.
(4) Есть рабочий пример curl. В Постман конвертировал в HTTP. Оттуда и беру:

POST /parse/image HTTP/1.1
Host: api.ocr.space
apikey: K83633147488957
Content-Length: 4227
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="base64Image"

data:[тут строка base64 https://ocr.space/text/base64string1.txt ]
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="language"

eng
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="isOverlayRequired"

false
------WebKitFormBoundary7MA4YWxkTrZu0gW--
7 trad
 
04.10.24
14:26
Вы уже три раза в ветке запостили свою бинари портянку. На кой чёрт нам на нее пялиться и скролить
8 arsik
 
гуру
04.10.24
14:29
(5) ждем 8.3.27
9 sikuda
 
04.10.24
14:30
(5) Согласен WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
это вопрос не к 1С.

Единственное, что 1С не умеет, это 🤦...
10 sikuda
 
04.10.24
18:24
(6) Ну если вы не понимаете, что бинарные данные просто строкой Вы не засунете - давайте третий раз портянку постить! ПЯТНИЦА 👍🔥

Находите как правильно мультипакеты делать в 1С в интернете:
Content-Type: multipart/form-data
https://infostart.ru/1c/articles/1924296/
11 trad
 
04.10.24
14:39
(10) base64 же
12 nemoxp
 
04.10.24
14:44
(7) Извините. У меня не переносится и скроллится только по горизонтали.
(1) Сейчас ставлю эту прогу, посмотрим что за зверь. Отпишусь, если что получится.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой