2010-12-07 2 views
2

Я пытаюсь загрузить изображение на сайт через свой API, пытаясь имитировать веб-форму и размещать данные с помощью cURL. Я ищу, чтобы проверить, что CURL действительно отправляет на сайт назначения, чтобы убедиться, что я правильно построил запрос. Я вижу, что вы можете использовать CURLOPT_VERBOSE, чтобы увидеть, что он посылает в заголовке запроса, но я ищу, чтобы увидеть отправленные данные, послеПолный HTTP-запрос от cURL в PHP

Content-Type: multipart/form-data; boundary=----------------------------91f22eea64e8 

данных я регистраци в $ почте и запрос

 $ch = curl_init(); 
     $opts = array(
      CURLOPT_POST => 1, 
      CURLOPT_CONNECTTIMEOUT => 10, 
      CURLOPT_RETURNTRANSFER => true, 
      CURLOPT_TIMEOUT => 60, 
      CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible;)', 
      CURLOPT_POSTFIELDS => $post, 
      CURLOPT_URL => 'https://example.com/api', 
      CURLOPT_HTTPHEADER => array('Expect:'), 
      CURLOPT_VERBOSE => 1 
     ); 
     curl_setopt_array($ch, $opts); 
     $response = curl_exec($ch); 

Благодаря

+0

Можете ли вы просто обнюхивать трафик с помощью tcpflow? (sudo tcpflow -c -i eth0 host foobar.com). Замените eth0 на en0 на Mac; en1 для wifi и т. д. – 2010-12-07 17:01:17

+0

Спасибо за то, что Павел. Я попытался сделать что-то подобное с dumcap и сохранить данные в файле, но он был неразборчив, думаю, что он был в двоичном формате. К сожалению, я попробовал ваше предложение с tcpflow и получил аналогичный результат. – eclipse31 2010-12-08 10:00:54

ответ

3

я справилась с этой проблемой в прошлом, посылая данные завиток себе первый, чтобы убедиться, что я посылаю правильный материал. Файл на моем собственном веб-сервере, который я отправлял (скорее всего, тот самый веб-сервер, с которого я отправляю для начала), нуждается только в файле .php: <?php echo file_get_contents('php://input'); ?>, поэтому установите URL-адрес этого файла для вашего CURLOPT_URL в вашем текущем php сценарий, а затем отправьте его с кодом echo $response; в свой код вызова curl, чтобы узнать, что было отправлено.

См. Также: http://www.codediesel.com/php/reading-raw-post-data-in-php/ и http://php.net/manual/en/wrappers.php.php для получения дополнительной информации/примеров.

О, хотя при повторном чтении вашего вопроса я вижу, что вы отправляете изображение, поэтому вам нужно отправить multipart/form-data, и это не работает с потоком php://input, вы должны использовать php://stdin для этого , в соответствии с документами PHP, приведенными выше. Я ожидаю, что он будет работать одинаково.

Смежные вопросы