2013-10-08 49 views
0

如果這是一個重複的問題,請打電話給我,但這開始變得荒謬。 我想,用PHP:我該如何發送一個GET頭來自PHP的請求?

GET http://www.example.com/hello.xyz 

這頭添加到請求:

"X-Header-Name: $foobar" 

其中foobar的來自已定義一個PHP變量。

然後將響應存儲在變量中。而已!沒有更多,沒有更多。 但我找不到它! 我不想使用捲曲或類似的東西,如果我每次都運行卷曲,它會減慢太多。編輯:我使用curl主要關心的是與Windows(本地服務器)和Linux(部署服務器)的兼容性。

<?php 

echo "So, how do I do it in the simplest way possible?"; 

?> 
+4

類似捲曲的庫是最簡單的方法。 *您使用的任何*庫都可能會「減慢」腳本執行速度,因爲請求本身需要時間。谷歌搜索'我如何發送一個GET頭來自PHP的請求''得到兩個好結果,顯示如何 –

+0

如果你不想使用curl出於性能的原因,你必須實現和測量它在curl。你的代碼太慢了? – Sven

+1

爲什麼不使用cURL?它還將爲您提供更多的功能來處理錯誤等。另外,如果您擔心在短時間內發出大量請求,可以使用'curl_multi_exec()'執行並行請求,這將允許腳本執行得更快,然後執行一系列'shell_exec() '命令或其他。我在https://github.com/mikecbrant/php-rest-client上有一個很好的輕量級'curl_multi_exec()'REST客戶端,你可以隨意使用。 –

回答

2

您可以使用file_get_contents如果你不想使用curl,但不知道速度,但它內置的函數,其中curlphp的。當談到speed時,我想無論你用於遠程請求,速度/性能將取決於網絡連接速度超過函數/庫,也許這些(curl/file_get_contents/fsockopen)有點不同,但我認爲它會很小(1-2%),你無法發現差異,它看起來幾乎是一樣的。

$opts = array(
    'http'=>array(
     'method'=>"GET", 
     'header'=>"X-Header-Name: $foobar" 
)); 
$context = stream_context_create($opts); 
$data = file_get_contents('http://www.example.com/hello.xyz', false, $context); 
f($data) { 
    // do something with data 
} 

另外,如果你想使用curl,那麼你可以使用這個

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Header-Name: $foobar")); 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/hello.xyz"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$data = curl_exec($ch); 
curl_close($ch); 
if ($curl_errno == 0) { 
    // $data received in $data 
} 

此外,check this answer,它可以幫助你來決定。

+0

它的工作!謝謝。 –

+0

@AustinBurk,非常歡迎你:-) –