获取PHP curl发送的数据

时间:2016-04-29 01:05:08

标签: php curl

PHP的卷曲令人惊讶地难以辨认和模糊。我在使用cURL下载JSON API数据时遇到一些问题。我想看看cURL发送到远程HTTP服务器的确切内容。

目前我唯一的调试选项是临时向一个将输入写入stdout的简单HTTP服务器发送请求。我需要编写该服务器只是为了调试curl!

我的所作所为:

function get_data($url) {
  $ch = curl_init();
  echo "Download: $url.\n";
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  // I hoped to get some debug info
  // but this setting has no effect
  curl_setopt($ch, CURLOPT_VERBOSE, true);    
  curl_setopt($ch, CURLOPT_HEADER, array(
    'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0',
    'X-Purpose: Counting downloads.'
  ));

  echo "Sending: \n".curl_getinfo($ch, CURLINFO_HEADER_OUT);
  $data = curl_exec($ch);

  var_dump($data);
  echo curl_error($ch)." ".curl_errno($ch);
  curl_close($ch);
  return $data;
}

如何将cURL发送的数据作为文本获取?

1 个答案:

答案 0 :(得分:0)

如果您想定义标题,请使用CURLOPT_HTTPHEADER CURLOPT_HEADER,即:

  curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0',
    'X-Purpose: Counting downloads.'
  ));

要获取内容curl正在发送使用:

curl_setopt($handle, CURLOPT_VERBOSE, true);
curl_setopt($handle, CURLOPT_STDERR,$f = fopen($verbosePath, "w+"));
function get_data($url) {
$verbosePath = __DIR__.DIRECTORY_SEPARATOR.'verbose.txt';
echo "Saving verbose to: $verbosePath\n";
$handle=curl_init('http://www.google.com/');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($handle, CURLOPT_HTTPHEADER, array(
    'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0',
    'X-Purpose: Counting downloads.'
  ));
curl_setopt($handle, CURLOPT_VERBOSE, true);
curl_setopt($handle, CURLOPT_STDERR,$f = fopen($verbosePath, "w+"));
$data = curl_exec($handle);
curl_close($handle);
fclose($f);
return $data;
}

get_data("https://www.google.com");

<强> verbose.txt

* About to connect() to www.google.com port 80
*   Trying 172.217.0.100... * connected
* Connected to www.google.com (172.217.0.100) port 80
> GET / HTTP/1.1
Host: www.google.com
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
X-Purpose: Counting downloads.