Вверх ↑
Этот топик читают: Гость
Ответов: 902
Рейтинг: 27
#1: 2012-04-02 16:59:05 ЛС | профиль | цитата
Подскажите пожалуйста, как средствами Хиасма, можно выполнить, такой запрос?
Описание:

Что такое кодировка multipart/form-data?
Как вы знаете, в обычном POST-запросе все параметры передаются в одной строке ( param1=value1¶m2=value2& ... итд.). Наряду с этим существует еще один способ, повсеместно используемый для отправки файла через веб-форму. Данные здесь уже не кодируются в urlencode а отправляются как есть, разграниченные специальными разделителями, которые вы сами генерируете и указываете в заголовке (официальная спецификация RFC1867). Вот пример, как выглядел бы ваш запрос отсылки капчи:

POST http://antigate.com/in.php HTTP/1.0
Content-Type: multipart/form-data; boundary=*BBBBBB*
Host: antigate.com
Content-Length: *XXXXXX*
--*BBBBBB*
Content-Disposition: form-data; name="method"

post
--*BBBBBB*
Content-Disposition: form-data; name="key"

2426c17036718523d2213d23b06389
--*BBBBBB*
Content-Disposition: form-data; name="file"; filename="capcha.jpg"
Content-Type: image/pjpeg

*CCCCCC*
--*BBBBBB*--

Где:
*BBBBBB* - разделитель, который должен быть достаточно уникальным (чтобы не повториться случайно в других данных).

Пример: -------------b358fdj4ha19fdk

Обратите внимание на то, как в примере разделитель используется с 2мя дефисами спереди каждый раз перед указыванием нового параметра и с 2мя дефисами спереди и в конце запроса.

*CCCCCC* - содержимое ФАЙЛА капчи, БЕЗ какого либо кодирования, целиком.

*XXXXXX* - длина содержимого POST-запроса в байтах, начиная от первого разделителя --*BBBBBB* до последнего --*BBBBBB*-- ВКЛЮЧАЯ ОБА. Т.е. предварительно нужно собрать содержимое запроса в памяти, посчитать его длину и уже потом формировать окончательный запрос.


PS. Соответственно если вы шлете не JPG а, скажем, GIF, то Content-Type должен быть не image/pjpeg, а image/gif. То же самое для формата PNG - image/png

карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_27497.txt [2.6KB] [119]
Гость
Ответов: 17029
Рейтинг: 0
#2: 2012-04-02 17:23:15 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-11 05:48:56
карма: 0

0
Ответов: 3349
Рейтинг: 233
#3: 2012-04-02 17:23:41 ЛС | профиль | цитата
Ivann
карма: 1

0
Ответов: 902
Рейтинг: 27
#4: 2012-04-02 17:37:45 ЛС | профиль | цитата
Ivann, Спасибо. А схему неболшую с примером можно?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 3349
Рейтинг: 233
#5: 2012-04-02 17:59:37 ЛС | профиль | цитата
juk, А Examples посмотреть?
карма: 1

0
Ответов: 902
Рейтинг: 27
#6: 2012-04-02 19:22:00 ЛС | профиль | цитата
Вроде получилось, только непонятно, как ключ вставить?
code_27500.txt
------------ Дoбавленo в 19.22:
Подскажите, как сделать, чтоб получилось:
------------h0M5kYAbf3nwgrDxHe7WKB
Content-Disposition: form-data; name="key"

2426c17036718523d2213d23b06389


Тоесть, нужно, чтоб внизу ключ дописывался.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_27500.txt [640B] [115]
Ответов: 3349
Рейтинг: 233
#7: 2012-04-02 19:24:22 ЛС | профиль | цитата
EventFromData
карма: 1

0
Ответов: 902
Рейтинг: 27
#8: 2012-04-02 22:06:15 ЛС | профиль | цитата
Что-то не выходит. Что я неправильно делаю?
code_27502.txt
------------ Дoбавленo в 22.06:
Не совсем понятно, вернее, совсем не понятно, как сделать это:
содержимое ФАЙЛА капчи, БЕЗ какого либо кодирования, целиком.

Как поместить его в FormatStr?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_27502.txt [983B] [111]
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)