在Curl中请求cUrl

时间:2017-02-22 07:27:15

标签: php http curl

我有类似这样的行动

public function coordinatAction()
{
    $curl = curl_init('https://maps.googleapis.com/maps/api/geocode/json?latlng=30.0000000000,40.0000000000');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);

    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $aParams);

    //Sending request
    $result = curl_exec($curl);
    if (false === $result) {
        $sResult = curl_error($curl);
    };
    curl_close($curl);

    return $result;
}

并对此操作进行单元测试:

public function coordinatActionTest()
{
    $curl = curl_init();
    $params = [/** Some Params */]
    curl_setopt($curl, CURLOPT_URL, 'http://mysite.local/coordinate'); //path to my action
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $params);

    $response = curl_exec($curl);
    $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    curl_close($curl);

    $this->assertEquals(200, $httpCode, "Wrong HTTP Response Code");
}

当我执行测试时,我得到了请求" curl in curl" (在测试呼叫卷曲中卷曲),但是第二次卷曲在5分钟后超时失败。如果我只用一个卷曲来表示它一切正常,但是滚动的卷曲会超时。可以解释为什么会发生

1 个答案:

答案 0 :(得分:0)

首先确保可以使用浏览器访问该网址。 http://mysite.local/coordinate。您也可以使用curl命令来验证链接。例如:

curl -XPOST YOUR_URL -d _YOUR_PARAMS

其次,如果没有适当的用户代理字符串,您的服务器可能不会接受任何请求。我建议你在卷曲测试中使用CURLOPT_USERAGENT选项(使用Opera或Mozila等浏览器)。

最后,检查服务器的httpd.conf文件,看看传入请求的其他强制参数是什么。