Вверх ↑
Ответов: 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]