通过PHP请求的网页返回404错误,但是当通过浏览器访问相同的URL时,它可以正常工作

时间:2014-09-05 00:09:00

标签: php

我尝试通过file_get_contents和HTTP_Request类访问API端点URL,但两者都返回404错误。但是,可以通过浏览器访问相同的URL。

值得注意的是,我在api.example.com上请求了一个页面,但404页面似乎是从www.example.com生成的页面。

这段代码在一周前就已经开始工作了,我刚刚注意到它现在不能正常工作,所以我不知道这是不是我的托管公司发生了变化,或者是不是#39;是我试图与之对话的网站。

对于它的价值,这里是我的代码,包含我迄今为止尝试过的所有内容(即添加标题并允许重定向):

    $url = 'http://api.example.com/a/b?api_key=abc123';
    $r = new HTTP_Request( $url, array( 'allowRedirects' => true ) );
    $r->addHeader('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0');
    $r->addHeader('Accept-Encoding','gzip, deflate');
    $r->addHeader('Connection','keep-alive');
    $r->addHeader('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
    $r->addHeader('Accept-Language','en-gb,en;q=0.5');
    $r->setMethod('GET');
    try {
        $r->sendRequest();
        if ($r->getResponseCode() == 200) {
            return json_decode( $r->getResponseBody() );
        } else {
            // Always goes here!!
            print '<!-- ' . $r->getResponseCode() . ' -->';
        }
    } catch (HttpException $ex) {
        echo '<!-- ' . $ex . ' -->';
    }

1 个答案:

答案 0 :(得分:0)

问题是由于DNS解析失败。切换到IP解决了它。谢谢你的时间,Dagon。