2009-08-01 102 views
2

以下代碼將檢索使用CURL在php中檢索的url的正文內容,但不是https。任何人都可以告訴我如何編輯代碼,因爲我需要返回的數據不僅僅是標題。如何使用CURL獲取HTTPS的正文內容

從我在這裏做的測試是結果。你可以看到它有一個內容長度,我只是不知道如何訪問它。

感謝 斯蒂芬

錯誤:0

串(1457)「HTTP/1.1 200 OK日期:星期六,2009年8月01日6點32分11秒格林尼治標準時間服務器:Apache/1.3.41(達爾文)PHP/5.2.4 mod_ssl/2.8.31 OpenSSL/0.9.7l Cache-Control:max-age = 60過期時間:Sat,01 Aug 2009 06:33:11 GMT Last-Modified:Thu,23 Nov 2006 17:44 :53 GMT的ETag: 「97d620-44b-4565de15」 接受範圍:字節的Content-Length:1099連接:關閉的Content-Type:text/html的「

<?php 

$curl_handle=curl_init(); 

$username = ""; 
$password = ""; 

$fullurl = "http://www.queensberry.com"; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_VERBOSE, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_FAILONERROR, 0); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 
    curl_setopt($ch, CURLOPT_URL, $fullurl); 

    $returned = curl_exec($ch); 

    curl_close ($ch); 
    var_dump($returned); 


?> 

回答

7

這裏是解決方案: 試試這個,只要保持編碼相同的其餘如上...

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_FAILONERROR, 0); 
// curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 
curl_setopt($ch, CURLOPT_URL, $fullurl); 

$returned = curl_exec($ch); 

curl_close ($ch); 
var_dump($returned); 

更改CURLOPT_HEADER到0時,這樣只返回頁面的內容。

1

守ldn't $fullurl是「https://www.queensberry.com」?

當我按照規定更改$fullurl並運行代碼時,var_dump顯示「正在建設中」頁面。

+0

感謝約什 是的,它應該是https://開頭,但是這是沒有問題的。它需要一些額外的參數,我想。我的一位工作人員開始工作。我必須讓他在這裏分享代碼。 謝謝 – 2009-08-11 07:53:58

1

如果您仍然需要標題,這意味着將CURLOPT_HEADER設置爲0不是一個選項,您可以通過查找空行(兩個CRLF)來查找正文的開頭。見規格:http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html

所以這應該做的工作:

$data = curl_exec($ch); 
    $start = strpos($data, "\r\n\r\n") + 4; 
    $body = substr($data, $start, strlen($data) - $start); 
0

我期待用捲曲的是getinfo頭的長度。然後串響應:

$info = curl_getinfo($ch); 
$start = $info['header_size']; 
$body = substr($result, $start, strlen($result) - $start); 
相關問題