所以我是所有这些的初学者。我试图教自己如何正确使用CURL,并在API调用中涉猎一些(不用担心,这个问题只涉及使用CURL)。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
此经过卷曲,并得到来自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时,它不会完成请求。下面是用于卷曲请求代码:
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);
任何想法?
你是什么意思的“不会完成请求”?卷曲失败?远程服务器返回错误页面而不是所需的数据? – 2010-10-06 20:58:18