PHP cURL «Не удалось разрешить хост: maps.googleapis.com; Неизвестная ошибка"

1

Я понимаю, что это вопрос, который задавался несколько раз раньше, но я пробовал данные ответы, я чувствую, вверх и вниз и чувствую, что я ударяю головой о стену.

PHP/Curl:

$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;

Как есть, я получаю "Не удалось разрешить host: maps.googleapis.com; Неизвестная ошибка". Если я добавлю это:

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

Что было предложено в другом сообщении, ошибка изменилась на: "Не удалось разрешить host: maps.googleapis.com; Имя или услуга неизвестна"

В любом случае, я не могу найти способ не получить ошибку. Я могу поместить URL-адрес в веб-браузер, и он отлично подходит для геокодов. У нас есть много других интеграций API, которые используют подобную настройку с cURL и работают нормально, поэтому я не чувствую, что это общая проблема на сервере, но она специфична для этого варианта использования.

Есть идеи?

  • 0
    Не могли бы вы опубликовать ссылки на вопросы, где вы попробовали ответы? Это может или вдохновить кого-то дать новый ответ, который работает для вас, или сообщить другим, что не работает для вас.
  • 0
    Все проблемы переполнения стека, связанные с такой проблемой, были (1) связаны с сервером (что, я считаю, моя проблема ограничена этим вариантом использования) или (2) связаны с отключением verifypeer, добавлением verifyhost и установкой его в 2, или изменив curl_ipresolve на версию 4. Мой код выше пытается атаковать все эти проблемы и все равно не будет работать через cURL (хотя они делают, когда я набираю URL запроса прямо в окне браузера)
Теги:
curl

1 ответ

0
Лучший ответ

вы создали свой API геокодирования перед продолжением? если не перейти на http://console.developers.google.com > API и API> API> в API Карт Google, нажмите еще> 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",...
  • 0
    Извините за задержку ответа. Да, я создал ключ. Я могу поместить весь запрос в браузер, и он отлично подойдет для меня. Но когда я пытаюсь запустить его через cURL, тогда возникает проблема с решением проблемы с хостом.
  • 0
    он должен работать с помощью file_get_contents (), попробуйте
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню