php
  • curl
  • response
  • 2012-04-24 62 views 0 likes 
    0

    我正在使用cURL向其他Web服务器发送请求。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我可以看到我所需要的响应做出了networkcapture时。它嵌入在httppacket中作为基于行的文本数据:text/html

    所以我对你的问题是: 我该如何访问这些数据?

    编辑: 这里是我包的截图:

    +0

    是你想要在标题里面的回应还是什么?你可以添加cURL的调试信息(如果你可以看到它)? – 2012-04-24 10:05:38

    +0

    @Jack我添加了屏幕截图,我不知道如何从curl获得调试信息 – Tobrun 2012-04-24 11:05:07

    +0

    这看起来像一个畸形的响应。标题以两条新行结束,但我只看到一行。这似乎是问题的根源。 – 2012-04-24 11:57:15

    回答

    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_setopt(CURLOPT_STDERR, "php://output")

    不要让我知道如果响应不能被改变(这是非常糟糕的)。

    +0

    感谢您的回复 – Tobrun 2012-04-26 10:48:48

    相关问题