我正在尝试从这个网站获取邮政编码:
http://pl.wikisource.org/wiki/Lista_kod%C3%B3w_pocztowych_w_Polsce
我的代码很简单:
<?php
$postalCode = $_GET['code'];
$httpAddr = 'http://pl.wikisource.org/wiki/Lista_kod%C3%B3w_pocztowych_w_Polsce/Okr%C4%99g_'.$postalCode[0].'_'.$postalCode[0].$postalCode[1].'-xxx';
file_get_contents($httpAddr);
?>但是当我将$postalCode设置为03-000 (也是01-000,05-000,但对于07-000,61-000,62-000是有效的)时,我收到了错误:
Warning: file_get_contents(http://pl.wikisource.org/wiki/Lista_kod%C3%B3w_pocztowych_w_Polsce/Okr%C4%99g_0_03-xxx): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /var/www/clients/client1/web4/web/ofix/test.php on line 5 页面地址是正确的,您可以复制和粘贴它在您的网络浏览器和它的工作。有什么想法吗?
发布于 2012-11-26 05:05:36
当Lightness在轨道上赛跑时,似乎PHP服务器确实阻止了PHP的请求。
使用cURL而不是file_get_contents()揭示了详细信息:
HTTP/1.0 403 Forbidden
脚本应使用包含联系信息的信息性User-Agent字符串,否则它们可能会在没有通知的情况下被IP阻止。
web浏览器在其请求中发送有效的User-Agent标头,这就是为什么页面在浏览器中可以正常加载,但在PHP中不能正常加载。
在我用PHP加载这个URL的测试中,有时成功,HTTP状态码为200,有时失败,状态码为403。请注意,错误消息指出脚本可能会被阻止(即.有时它们可能不会被阻止)。
编辑
有关更多信息,请参阅此问题:How to get results from the Wikipedia API with PHP?
https://stackoverflow.com/questions/13555013
复制相似问题