php
  • curl
  • response
  • 2012-04-24 66 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

    相關問題