2009-08-28 53 views

回答

7

要通過HTTP獲取的內容,第一,你可以用file_get_contents嘗試;您的主機可能沒有禁用HTTP://流:

$str = file_get_contents('http://www.google.fr'); 

位,這可能被禁用(見allow_url_fopen);有時是...


如果它被禁用,您可以嘗試使用fsockopen;手冊中給出的例子說,這(引用)

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    $out = "GET/HTTP/1.1\r\n"; 
    $out .= "Host: www.example.com\r\n"; 
    $out .= "Connection: Close\r\n\r\n"; 
    fwrite($fp, $out); 
    while (!feof($fp)) { 
     echo fgets($fp, 128); 
    } 
    fclose($fp); 
} 

考慮到這是相當低的水平,但(你是直接寫給用插座的工作,和HTTP協議是沒有那麼簡單),使用一個使用它的圖書館會讓你的生活更輕鬆。

例如,你可以看看snoopy; here就是一個例子。

+0

POST呢? – Phil 2009-08-28 18:42:21

+2

file_get_contents將無法正常POST;與史努比,看着自述文件,提交方法可能會。 – 2009-08-28 18:46:46

+0

優秀的職位。我建議使用HTTP/1.0對於不熟悉HTTP的人來說更容易。 – Rushyo 2009-08-28 23:16:16

2

您可以使用PHP編寫一個簡單的curl服務器腳本,並將其放置在啓用curl的託管中,並且當您需要curl時 - 您可以在需要時從無捲曲機器調用客戶端調用,並且它會返回您需要的數據。可能是一個奇怪的解決方案,但有一次有幫助。

2

此主題中的所有答案都提供了有效的解決方法,但有一點您應該記住。無論出於何種原因,您所在的主機都認爲通過PHP代碼從您的Web服務器發出HTTP請求是一件「壞事」,因此已禁用(或未啓用)curl擴展。如果您找到解決方法,並且他們注意到他們會以其他方式阻止您的請求,那麼確實有很好的機會。除非有政治上的原因強迫你使用這個特定的主機,否則認真考慮如果需要發送http請求,請將你的應用/頁面移到其他地方。