【发布时间】:2017-03-04 18:12:41
【问题描述】:
我知道这是使用 Curl 时的常见问题,但在查看 StackOverflow 和 Google 后我没有找到解决方案。
我尝试了不同的用户代理,但遇到了不同的错误:
- 请求的 URL 返回错误:400 Bad Requestresource(19) of type (Unknown)
- 请求的 URL 返回错误:400 Bad Requeststring(42) of type (Unknown)(我注意到 42 指的是 $target_url 中的 '=')
取决于我对下面的代码所做的一些修改,但是没有人指出我解决这个问题的方向。
感谢任何建议:
$target_url = "http://www.hockeydb.com/ihdb/stats/pdisplay.php?pid=170307";
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)');
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$html = curl_exec($ch);
if ($html === false) $html = curl_error($ch);
echo stripslashes($html);
curl_close($ch);
var_dump($ch);
*** 我应该注意我实际上是从文件中读取 url(和其他一些),所以也许 url 的格式有问题? 我以前做过这个并且没有问题,但现在我很难过。 我读取了每一行/url,并将其放入一个数组中,稍后循环遍历。
*** 如果我对 url 进行硬编码,那么它可以正常工作,但由于某种原因,从文件中读取它会产生错误。
【问题讨论】:
-
我们可以在这里提供一些帮助。您必须将工作请求(可能使用某些浏览器完成)与您发送的请求进行比较。最好使用网络嗅探器,以便两个请求的显示相同。
wireshark是一个易于使用的。 -
这很奇怪,我在沙盒上尝试了您的代码并且它有效
-
无论如何尝试包含 Accept 标头(编码和语言)
-
我也在沙箱上尝试过它并且它可以工作,但是当它上传到我的服务器时它不会。我在上面添加了一条注释,我正在从 *.txt 文件中读取 url。