API подсказок на PHP
А вот без Google_Client никак не смогли обойтись!!!!! почему не сделали просто нормальную библиотеку без зависимостей! для php 5.0 например! Не всем нравится перелопачивать не только ваши классы, а еще и вторую библиотеку от гугла! Это всего-лишь API т.е запрос-ответ!
Ответ
Помогите.
Внедрил класс SuggestClient на сайт
И запрос сделал как в примере тестовые
Но у меня нет ответа (данных), ошибки тоже не выдает...
Нужно ли еще что-то подключать?
п.с. при помощи jquery библиотеки данные приходили...
Покажите, пожалуйста, код.
Либо дайте сайт, на котором можно посмотреть ваше подключение.
дебаг согласно примеру (разбираю в классе):
1.переменная $options (public function suggest) содержит:
http method = POST header 0 = Content-type: application/json 1 = Authorization: Token 746509fbafc513156de… content = {"query":"\u043c\u043e\u0441\u043a\u0432…
говорит о том что опции есть
2.далее конструкция: $this->url.$resource выдает адрес:
https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address
адрес верный
3.далее $context = Resource id #46
не знаю - так или не так - но выдал так...
В ИТОГЕ:
$result = file_get_contents($this->url . $resource, false, $context);
ПУСТОЙ!!!
Файл с классом
namespace Site; Class SuggestClient { private $url = 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/'; private $token = 'тут токен'; public function suggest($resource, $data) { $options = array( 'http' => array( 'method' => 'POST', 'header' => array( 'Content-type: application/json', 'Authorization: Token ' . $this->token, ), 'content' => json_encode($data), ), ); $context = stream_context_create($options); $result = file_get_contents($this->url . $resource, false, $context); return $result; } public function address($query, $count, $from_bound = NULL, $to_bound = NULL) { $data = array( 'query' => $query, 'count' => $count ); if (!is_null($from_bound)) { $data['from_bound'] = array('value' => $from_bound); } if (!is_null($to_bound)) { $data['to_bound'] = array('value' => $to_bound); } return json_decode($this->suggest("address", $data)); } }
а это на станице сайта
$dadata = new Site\SuggestClient(); $suggestQuery = 'москва серпуховская'; if (count($argv) > 1) { $suggestQuery = $argv[1]; } $suggestCount = 2; if (count($argv) > 2) { $suggestCount = $argv[2]; } $suggestFromBound = NULL; if (count($argv) > 3) { $suggestFromBound = $argv[3]; } $suggestToBound = NULL; if (count($argv) > 4) { $suggestToBound = $argv[4]; } $suggestResp = $dadata->address($suggestQuery, $suggestCount, $suggestFromBound, $suggestToBound);
Больше всего меня смутило вот эта часть кода в вашем примере:
print "Query: " . $query . "\n"; print "Suggestions: \n"; foreach ($resp->suggestions as $suggestion) { print $suggestion->unrestricted_value . "\n"; }
$resp->suggestions
suggestions - это что?
$suggestion->unrestricted_value
unrestricted_value - и это что?
У меня ваш пример корректно работает. Если добавить вывод результата:
$suggestResp = $dadata->address($suggestQuery, $suggestCount, $suggestFromBound, $suggestToBound); var_dump($suggestResp);
Выдает правильный ответ:
object(stdClass)#2 (1) { ["suggestions"]=> array(2) { [0]=> object(stdClass)#3 (3) { ["value"]=> string(50) "г Москва, ул Серпуховская Б." ["unrestricted_value"]=> string(50) "г Москва, ул Серпуховская Б." ["data"]=> object(stdClass)#4 (72) { ["postal_code"]=> string(6) "115093" ["country"]=> string(12) "Россия" ["region_fias_id"]=> string(36) "0c5b2444-70a0-4932-980c-b4dc0d3f02b5" ["region_kladr_id"]=> string(13) "7700000000000" ["region_with_type"]=> string(15) "г Москва" ["region_type"]=> string(2) "г" ["region_type_full"]=> string(10) "город" ["region"]=> string(12) "Москва" ...
Сервис поддержки клиентов работает на платформе UserEcho
Гена, можно и без гугло-клиента: пример на голом ПХП.