Имя: Пароль:
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) Сейчас ставлю эту прогу, посмотрим что за зверь. Отпишусь, если что получится.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший