2013-06-04 163 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