Что нового

Сеть, интернет Отправка http-запроса на сервер RuCaptcha

KEO

Новичок
Сообщения
26
Репутация
0
Извиняюсь за «много букв». Но меньше никак. Если что нарушил или выбрал не тот раздел – также извиняюсь, я тут не частый гость.
Я погуглил, но нашел только вот это.
Отсюда и отталкивался в дальнейшем. Весь базис взял оттуда. Но результата пока не достиг. Скорее всего там устаревшие сведения по формированию пакета для отправки.
Задачи:
1. Сформировать правильный пакет для запроса.
2. Правильно его отправить на сервер.
Подзадачи:
1. Отправить изображение с твердотельного накопителя.
2. Отправить изображение, хранящееся на сервере (http-ссылка).

Форма для создания пакета описана вот тут и вот тут.
Вот сразу же два вопроса:
1. Надо ли при формировании запроса переносить все на новую строчку (как на второй ссылке, скриншот), или же можно делать всё в одной строчке (как на первой ссылке, скриншот) ?
2. Почему по второй ссылке каждая строка оканчивается на «/>», а на первой просто «>» ? Какая-то разница есть ? Если да, то где правильно ?

Теперь вопросы по формированию пакета.
Где в формировании пакета указывается свой ID-key сервиса RuCaptcha – я понял. А вот где в теле формирования пакета указывается файл, который будем отправлять – вот совершенно не понятно.

Я покажу свой программный код. Просьба посмотреть и сказать: что я сделал не так ? Мне каждый раз выдаёт ошибку: ERROR_UPLOAD.
Код:
;~~~ формирование пакета
Local $binFile = FileRead($pathFile)
Local $content = '<form method="post" action="https://rucaptcha.com/in.php" enctype="multipart/form-data">' & @LF
$content &= '<input type="hidden" name="method" value="post">' & @LF
$content &= '<input type="text" name="key" value=' & $apiKey &'>' & @LF
$content &= '<input type="file" name="file" value=' & $binFile &'>' & @LF
$content &= '<input type="submit" value="Загрузить и получить ID">' & @LF
$content &= '</form>'

;~~~ отправка пакета
Local $oWinHttp = ObjCreate('WinHttp.WinHttpRequest.5.1') ; создаём COM-объект
With $oWinHttp
.Open("POST", "https://rucaptcha.com/in.php", False) ; создаём соединение, указываем адрес страницы
.SetRequestHeader("Content-Type", "multipart/form-data") ; тип отправляемого запроса
.SetRequestHeader('Content-Length', BinaryLen($binFile)) ; длина запроса
.Send(StringToBinary($content, 1)) ; отправляем запрос
Local $sResp = .ResponseText ; получаем ответ
EndWith


Тело файла я попытался всунуть в 4-ю строчку пакета, добавив «value=' & $binFile &'>'». Не прокатило.
Далее я попробовал вставить файл в 5-ю строчку, оставив 4-ю как описано на сайте.
Код:
$content &= '<input type="file" name="file" >' & @LF
$content &= '<input type="submit" value=' & $binFile &' >' & @LF

Тоже не прокатило.

Вопросы:
1. Где при формировании пакета указывается отправляемый графический файл ?
2. Как надо правильно составить пакет ? Надо ли переносить строчки или не надо ? Нужно писать в конце каждой строчки «/>» или же «>» ?
3. Правильно ли я отправляю сформированный пакет на сервер ? Может быть у меня где-то ошибка при отправке ?
4. Выше я привел вопрос по отправке файла с локального диска. А как изменится пакет и способ его отправки, если я решу отправлять графический файл в виде http-ссылки ?
Парни, помогите пожалуйста. Пока не решу вопрос с получением разгаданной капчи – теряется смысл создавать мой скрипт, который я задумал.
Сообщение автоматически объединено:

Я искал как оформить код в Спойлер (тут на форуме), но не нашёл. Извиняюсь.

Если в кого то есть готовые работающие код-заготовки по моему вопросу - буду рад их получить и изучить самостоятельно
Сообщение автоматически объединено:

Всё я разобрался. 3 вечера колдовал. Но победил.
 
Последнее редактирование:

Oki

Продвинутый
Сообщения
452
Репутация
63
Всё я разобрался.
Цель этого форума не только в том, чтобы разобраться, но и в том, чтобы оставить полезный след для тех, кто будет искать полезные ответы на свои вопросы. Поэтому тему нельзя считать закрытой только потому, что топикстартер в своих невидимых мыслях сам разобрался.
 
Верх