![]() |
POST и headers
Нужно сформировать правильный POST запрос в CURL. Сначала я делаю обычный запрос через браузер и ловлю отправленные и полученные хедеры и содержимое запроса (с помощью аддона firebug на файрфоксе), потом воспроизвожу это в своем запросе с помощью curl. Так вот, firebug выдает мне среди прочих хедеров следующие:
Content-Type:multipart/form-data; boundary=---------------------------14162188131998 Content-Length:118018 Другой перехватчик хедеров, HttpAnalyzer, их не видит 1. Важны ли эти заголовки при запросе, можно ли их опустить? 2. Как правильно сформировать запрос с телом (картинкой) и параметрами? 3. Как узнать Content-Length картинки перед отправкой? В гугле по этой теме есть очень много, но ничего по делу. |
читаем и учимся http://ru.php.net/manual/de/function.curl-setopt.php
|
1. Длина контента не оч вроде как ( если скачивал файлы думаю видел что иногдауказываеться какого он размера а иногда нет вот от указания или неуказания заголовка этого и зависит )
2. http://ru.php.net/manual/ru/function.curl-setopt.php тонко намекну ( http://curl.haxx.se/libcurl/php/examples/httpfileupload.html ) 3. Ты картинку все равно |
1. нельзя опускать
2. Код:
POST адрес HTTP/1.0 |
Цитата:
Content-Type: multipart/form-data; boundary=некоторое_достаточно_ никальное_значение Host: хост Content-Length: длина_содержимого Content-Disposition: form-data; name="file"; filename="имя_файла" Content-Type: image/jpeg (тип) в CURLOPT_HTTPHEADER и параметры в CURLOPT_POSTFIELDS, а всё остальное курл сформирует сам? Content-length узнал с помощью strlen(file_get_contents('имя_файла')); Цитата:
1. CURLOPT_INFILESIZE : при закачке файла на удаленный сервер, следует использовать этот параметр для указания ожидаемого размера файла. (указать вместо Content-Length хедера?) 2. CURLOPT_UPLOAD : Установка этого параметра в ненулевое значение означает, что будет производиться закачка файла на удаленный сервер.(похоже тоже надо указать, поскольку я отправляю файл) 3. CURLOPT_INFILE : Файл, содержащий данные для передачи. (может, надо использовать это вместо указания имени файла среди параметров CURLOPT_POSTFIELDS?) И еще, какая разница между указанием user-agent в хедерах CURLOPT_HTTPHEADER и в CURLOPT_USERAGENT? |
Код:
function post_file ($url, $avars) { $avars['type'] => 'link' ( тип - ссылка на локальный файл для загрузки ( так как реализованно посредством функции file_get_contents можно попробовать и удаленные файлы)) || 'content' ( тип - содержимое ) $avars['value'] => 'value' ( если тип - ссылка тогда здесь должна быть ссылка на файл, если же content то содержимое файла закодированое посредством функции base64_encode ) $avars['filename'] => 'filename' ( имя файла в запросе ) ), возвращает ответ сервера на запрос. |
Самая известная статья для новичков.
http://www.phpclub.ru/detail/article/http_request Цитата:
|
Ему кажется пример с курлом был нужен..
Простой POST передаётся строкой в CURLOPT_POSTFIELDS. POST с boundary передаётся туда же, только массивом. Всё, что в boundary передаётся с добавлением собачки @ а вы тут намутили ) |
смотри мой третий пост =\
http://curl.haxx.se/libcurl/php/examples/httpfileupload.html |
Мне нужно абсолютно точно воспроизвести запрос из браузера в своей программе с помощью курла. Вот что надо отправить в хедерах:
Код:
(Request-Line) POST /site.php?par=1 HTTP/1.1Код:
Content-Type: multipart/form-data; boundary=---------------------------21718375316139PHP код:
|
| Время: 12:18 |