CURL请求问题

时间:2010-10-06 18:19:29

标签: php curl urlencode

所以我是所有这一切的初学者。我正在尝试自学如何正确使用CURL,并在API调用中涉及一点(不用担心,这个问题只与使用CURL有关)。

现在我的原始代码运行得很好 - 我使用urlencode构建了请求,并且绝大多数请求都引发了我正在寻找的响应。然而,大约10%的收到的回复不会检索我需要的结果。让我举个例子:

$urlToFetch = "http://lsapi.seomoz.com/linkscape/url-metrics/" . urlencode($objectURL) . "?" . $this->structureURL();
$response = ConnectionUtil::makeRequest($urlToFetch);

使用上面的代码会生成带有以下数据的$ urlToFetch: http://lsapi.seomoz.com/linkscape/url-metrics/www.alinki.com%2Fdomainlinks.php%3Fpage%3D516000?AccessID=XXXXXX&Expires=1286388878&Signature=YYYYYYYYY

这会传递CURL,并从seoMoz API获得响应 - 然而,响应缺少一些数据。我已经开玩笑了,发现这是一个如何构建URL的问题。例如,通过将值从www.alinki.com%2Fdomainlinks.php%3Fpage%3D516000更改为www.alinki.com/domainlinks.php?page=516000,我可以检索我要查找的所有字段。按照这个逻辑,我应该能够构建一个类似于这样的URL: (我正在删除http,因为我无法发布多个链接)lsapi.seomoz.com/linkscape/url-metrics/www.alinki.com/domainlinks.php?page=516000?AccessID=XXXXXX&Expires=1286388878&Signature=YYYYYYYYY 并检索我需要的所有字段。问题是,当我尝试将该URL传递给CURL时,它将无法完成请求。以下是用于CURL请求的代码:

public static function makeRequest($urlToFetch)
{
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$urlToFetch");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, ConnectionUtil::CURL_CONNECTION_TIMEOUT);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);

$buffer = curl_exec($curl_handle);
//var_dump($buffer);
curl_close($curl_handle);

$arr = json_decode($buffer);

return $arr;
}

我的要求如下:

 $urlToFetch = "http://lsapi.seomoz.com/linkscape/url-metrics/" . urlencode($objectURL) . "?" . $this->structureURL();
    $response = ConnectionUtil::makeRequest($urlToFetch);

关于我正在制造什么愚蠢错误的任何想法?

1 个答案:

答案 0 :(得分:0)

尝试使用http_build_query代替urlencode来生成查询字符串。看起来seomoz代码没有正确处理urlencoded数据。