PHP cURL"无法解析主机:maps.googleapis.com;未知错误"

时间:2015-08-28 23:12:07

标签: php curl

我意识到这是一个以前被问过几次的问题,但我已经尝试了给定的答案,我觉得,上下都觉得我的头撞在墙上。

PHP /卷曲:

$this->ch = curl_init();

curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST,  2);

curl_setopt($this->ch, CURLOPT_URL, "https://maps.googleapis.com/maps/api/geocode/json?address=1956+Mountain+View+Drive,+San+Diego,+CA&key=?????");
curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST, "GET");

$response = curl_exec($this->ch);

var_dump($response);
var_dump(curl_error($this->ch)); die;

按原样,我得到"无法解析主机:maps.googleapis.com;未知错误"。如果我加上这个:

curl_setopt($this->ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 )

在另一篇帖子中建议,错误更改为:"无法解析主机:maps.googleapis.com;姓名或服务未知"

无论哪种方式,我似乎无法找到一种不会出错的方法。我可以将URL放到Web浏览器中,它对我来说很好。我们有很多其他API集成,它们使用与cURL类似的设置并且工作正常,所以我不觉得它是一般服务器范围的问题,但它是特定于此用例的

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您是否在继续之前创建了地理编码API? 如果没有,请转到http://console.developers.google.com> API& auth> API>在Google Maps API下按更多>地理编码API>启用api并获取密钥 所以代码就像

<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);

curl_setopt($ch, CURLOPT_URL, "https://maps.googleapis.com/maps/api/geocode/json?address=1956+Mountain+View+Drive,+San+Diego,+CA&key=YOUR_KEY_HERE");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");

$response = curl_exec($ch);

print "<pre>";
var_dump($response);
var_dump(curl_error($ch)); die;

如果以上不起作用,那么你可能会在我假设的curl库中遇到问题,

除此之外,因为您只是请求获取数据,您只需使用

  

的file_get_contents()

<?php
echo file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=1956+Mountain+View+Drive,+San+Diego,+CA&key=YOUR_KEY");

然后输出

{ "results" : [ { "address_components" : [ { "long_name" : "1956", "short_name" : "1956", "types" : [ "street_number" ] }, { "long_name" : "North Mountain View Drive", "short_name" : "N Mountain View Dr",...