所以我是所有这一切的初学者。我正在尝试自学如何正确使用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);
关于我正在制造什么愚蠢错误的任何想法?