2013-06-04 161 views
3

如何將自定義HTTP請求發送到URL爲「http:// [IP]:[Port] /」的服務器?PHP發送自定義HTTP請求

我的意思是,與其第一行是一個正常的GET或POST像這樣:

GET /index.html HTTP/1.1 
Host: www.example.com 

怎麼可以這樣的東西取代只是想:

CUSTOM 
Host: [IP] 

我不如果需要的話,不必介意使用任何額外的庫,例如cURL。

UPDATE:

我使用下面的代碼捲曲嘗試:

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "http://[IP]:[Port]/"); 
curl_setopt($ch, CURLOPT_PORT, [Port]); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
//curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "CUSTOM"); 

$output = curl_exec($ch); 
curl_close($ch);  

print($output); 

但它只是不斷加載2分鐘,直到它說內部錯誤(既沒有使用CURLOPT_CUSTOMREQUEST)。但是,如果我使用標準網站(例如http://google.com),它將正常工作。

另外我忘了提及,我的服務器使用的端口是7899,這是好嗎?在我的web瀏覽器中打開它,但cURL似乎不能。

+1

RTLM:http://php.net/manual/en/function.stream-context-create.php和/或http ://php.net/manual/en/function.curl-setopt.php(尋找CURLOPT_CUSTOMREQUEST) –

+0

這可能是有趣的:http://php.net/manual/en/function.http-request.php –

+1

只是爲了迂迴:如果第一行不是「Method Request-URI HTTP-Version」,那麼它不是HTTP。 RFC 2616第5.1節。 – RichieHindle

回答

2

看起來你的代碼沒有問題。如果您使用共享託管服務提供商,請他們打開出站TCP端口7899.

+0

謝謝,這固定了它。 – Jimmay

0

您可以使用http_request_method_register函數創建一個自定義HTTP請求方法:必須將要處理請求的服務器上運行

http://www.php.net/manual/en/function.http-request-method-register.php

此代碼。如果您嘗試在任何舊服務器上使用非標準的HTTP請求方法,則根據服務器可能會忽略它,或者可能會返回錯誤代碼。

+0

不幸的是我似乎無法安裝這個函數所需的http_pecl。所以我現在不得不尋找替代品。 – Jimmay