我正在使用fsockopen
对不同的URL进行异步请求。
假设我需要使用以下格式(带有路径)对网址进行请求:POST http://www.example.com/v1
。
此代码示例运行良好。
$url = "www.example.com";
$path = "/v1";
$fp = fsockopen($url, 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "POST " . $path . " HTTP/1.1\r\n"; // 'POST /v1 HTTP/1.1'
$out .= "Host: " . $url . "\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
// Read the body of the response just for testing purpose.
$output = "";
while ($line = fgets($fp)) {
$output .= $line;
}
echo $output;
fclose($fp);
}
但是我无法将请求发送到没有路径的URL。例如:POST http://www.example.com
。
您可以想象变量$path
的值为""
,请求的第一行将是POST HTTP/1.1
。
结果,我看不到任何回应。
如果我将变量$path
“强制”为值/
(请求的第一行将是POST / HTTP/1.1
),则会收到301作为响应(不符合预期)
有什么建议吗?预先感谢!