【发布时间】:2011-10-19 16:04:27
【问题描述】:
我使用 php 函数 file_get_contents,其中一个参数是 http 标头。我把它们做成这样:
if (strpos($key, 'HTTP_') === 0) {
$key = strtolower(strtr(substr($key, 5), '_', '-'));
$this->headers .= $key . ': ' . $value . '\r\n';
}
但这里有个问题,我应该像这样用双引号发送标题:
"Connection: close\r\nContent-Length: $data_len\r\n"
这是我如何提出请求的示例:
$opts = array(
'http' => array(
'method' => "GET",
'header' => $this->headers
)
);
$this->data = file_get_contents('http://phd.yandex.net/detect', false, stream_context_create($opts));
但它失败了。如果我用自定义的 http 标头字符串替换数组中的 $this->headers,一切正常。
如何让它正常工作?
【问题讨论】:
-
你考虑过cURL吗?
-
你的自定义字符串是什么样的,v.s.上面的代码生成了什么?
-
你省略了
\r\n周围的引号是错字吗? -
您在第一个代码部分中缺少
\r\n周围的引号 - 这可能是问题吗?我怀疑它不会解析,但你永远不知道...... -
\r\n周围缺少引号,这是一个错字
标签: php http http-headers