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
Гена, можно и без гугло-клиента: пример на голом ПХП.