0

我正在使用 cURL 向另一个网络服务器发送请求。

这是我用来设置和发送请求的代码:

function currentStatePlaying($ip){
$url = "http://".$ip."/?track=ginfo";
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL,$url);
$result = curl_exec($ch);   
curl_close($ch);
echo $result;
}

我注意到结果是空的,当查看使用wireshark 制作的网络捕获时,我可以看到我需要的响应。它作为基于行的文本数据嵌入到 httppacket 中:text/html

所以我的问题是:我怎样才能访问这些数据?

编辑:这是我的数据包的屏幕截图:

4

1 回答 1

1

您的服务器的响应格式不正确。它应该是这样的:

HTTP/1.0 200 OK\r\n
Content-Type: text/html\r\n
\r\n
The content goes here

通过让curl_setopt(CURLOPT_VERBOSE, 1)您已经在 cURL 中启用调试模式,但也许您还应该拥有curl_setopt(CURLOPT_STDERR, "php://output")

如果无法更改响应(这非常糟糕),请告诉我。

于 2012-04-25T02:50:06.187 回答