2013-07-19 59 views
1

我試圖打開一個到我在Amazon EC2實例上託管的Web服務器的連接。我可以從我的瀏覽器的GET請求,給了我訪問端口下面:用PHP打開與HTTP服務器的連接

Started HTTP server... 
- <IP redacted> [19/Jul/2013 13:49:24] code 501, message Unsupported method ('GET') 
- <IP redacted> [19/Jul/2013 13:49:24] "GET/HTTP/1.1" 501 - 

這是像預期的那樣我還沒有實現在Web服務器上GET - 但我得到使用以下完全沒有響應片段POST到相同的端口。

<?php 
$req = 'verify=true'; 

$header = "POST/HTTP/1.1\r\n"; 
$header .= "Host: ec2-55-555-555-555.compute-1.amazonaws.com\r\n"; 
$header .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; 
$fp = fsockopen ("ec2-55-555-555-555.compute-1.amazonaws.com", 8080, $errno, $errstr, 30); 

fputs ($fp, $header . $req); 

fclose ($fp); 
?> 

它絕對運行並達到結束,但fsockopen調用超時。有什麼遺漏或有什麼,但不應該是?

回答

2

從PHP與HTTP服務器交互的最簡單方法是使用curl

這是一個很棒的功能庫。它運作良好。

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, "Your_url_here"); 

$resp = curl_exec($curl); 
+0

我正在修改我已經被第三方發送的代碼,PHP實際上不是我的東西,所以我正在使用我所擁有的 - 但沒有理由不改變它。我會嘗試捲曲,謝謝。 –

+0

不需要通過嘗試處理HTTP協議來重新發明輪子。 –