【发布时间】:2014-08-18 16:38:28
【问题描述】:
我有一个脚本,我使用以下方法读取文件:
file_get_contents(urlencode($url));
我收到此错误:
failed to open stream: HTTP request failed! HTTP/1.0 400 Bad request
我尝试了this,但仍然收到错误消息。 我试过这个:
ini_set('default_socket_timeout', 120);
这个:
$opts = array('http'=>array('timeout' => 120));
$context = stream_context_create($opts);
$resul = file_get_contents($url,0,$context);
还有这个:
$opts = array('http'=>array('timeout' => 120,'header'=>'Connection : close'));
$context = stream_context_create($opts);
$resul = file_get_contents($url,false,$context);
你能帮我弄清楚为什么会出现错误吗?
【问题讨论】:
-
urlencode应在将参数附加到 URL 时调用,而不是在整个 URL 上调用。 -
可能您对流摆弄所做的任何事情都无济于事,因为您使用的网址本身就是错误的。例如语法错误、错误参数等......你不能盲目地对整个 url 进行 urlencode,因为这也会对必要的东西进行编码。例如
http://example.com变为http%3A%2F%2Fexample.com,现在它不再是正确的 url。 -
urlencode正在编码方案和主机 (http%3A%2F%2Fexample%2Ecom),返回错误的 URL。正如@Barman 所说,只需对参数进行编码,而不是对整个 URL 进行编码。另外,请使用rawurlencode。 -
@Barmar 刚刚编辑我只为参数做了 urlencode 但仍然收到错误,在某些情况下我什至不使用 urlencode 并且我有同样的错误...@Ben 是什么rawurlencode ??
-
@MarcB 谢谢我只是想得到解释......需要一些时间
标签: php