我正在使用Google Fusion Tables API从Fusion Table获取行(我打算更新这些行,但我试图保持简单,直到我得到正确的连接)。该表在其设置中设置为“不公开”和“可下载”。我有API密钥,因为当我在浏览器中加载它时请求正常,但是当我执行我的代码时,我收到来自Google的错误请求响应。以下是我正在使用的代码:
注意:我目前不使用Oauth来验证请求。该文档指出,如果您使用GET字符串和sql语句来操作数据,则不需要这样做。下面的密钥应该适用于任何来源,但我打算切换到服务器密钥以确保安全。
$sellerlist = Mage::getModel('marketplace/userprofile')->getCollection()->addFieldToFilter('partnerstatus',array('eq'=>'Seller'))->addFieldToFilter('wantpartner',array('eq'=>1));
foreach($sellerlist as $seller){
$profileurl = Mage::getUrl()."marketplace/seller/profile/".$seller->getProfileurl();
if($seller->getshoptitle()!=''){ $shoptitle = $seller->getshoptitle();}
else { $shoptitle = $seller->getprofileurl(); }
$logo=$seller->getlogopic()==''?"noimage.png":$seller->getlogopic();
$logo=Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).'avatar/'.$logo;
$latitude = $seller->getlatitude();
$longitude = $seller->getlongitude();
if ($latitude !== ''){
$req = curl_init();
curl_setopt($req, CURLOPT_URL, urlencode("https://www.googleapis.com/fusiontables/v1/query?sql=SELECT ROWID FROM 12rLP9qGYclz-kkDa_y_NJ1Meh81EZK_5o7yp38sk WHERE shoptitle='".$shoptitle."'&key=AIzaSyAqt5biL_4nsZ25ZZC1RaeClssOIhXkn_k"));
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
curl_setopt($req, CURLOPT_HEADER, 0);
curl_setopt($req, CURLOPT_FRESH_CONNECT, true);
$responseJSON = curl_exec($req);
$resp = json_decode($responseJSON, true);
curl_close($req);
print_r($responseJSON);
}
}
答案 0 :(得分:0)
不要对完整的网址进行编码,您只能对GET参数进行编码(http_build_query
将是一个很好的选择):
curl_setopt($req,
CURLOPT_URL,
'https://www.googleapis.com/fusiontables/v1/query?'
.http_build_query(array('sql'=>
"SELECT ROWID
FROM 12rLP9qGYclz-kkDa_y_NJ1Meh81EZK_5o7yp38sk
WHERE shoptitle='{$shoptitle}'",
'key'=>'AIzaSyAqt5biL_4nsZ25ZZC1RaeClssOIhXkn_k')));