2016-02-04 4 views
2

Я пытаюсь перечислить количество маяков, зарегистрированных с помощью ключа OAuth, но я получаю только 10 за раз. Я структурирование моего запроса HTTP так:Google Proximity API возвращает 500 Internal Error на страницеToken Query

https://proximitybeacon.googleapis.com/v1beta1/beacons

Я попытался установить maxResults быть больше, чем общее количество маяков извлекаемых (maxResults = 20?), Но всегда возвращает ошибку 400 Bad Request (maxResults неизвестно). Когда я пытаюсь использовать pageToken = [KNOWN NEXT PAGE TOKEN], я получаю 500 внутренних ошибок.

Без возможности использовать любой из этих, я не могу видеть мимо моих первых 10 маяков. Любая помощь будет принята с благодарностью!

EDIT: Согласно документу this, похоже, что эти параметры недоступны для API Proximity. Я не уверен, правильно ли это, потому что это означает, что невозможно перечислить больше, чем первые 10 возвращенных маяков.

ответ

2

Правильный способ получить следующую страницу результатов - использовать параметр pageToken, как вы описываете. Хотя я считаю, что видел эту работу раньше, я подтвердил, что API в настоящее время возвращает 500 ошибок для этого. (См. Мои результаты теста ниже.) Похоже, что это проблема на стороне сервера.

curl 'https://proximitybeacon.googleapis.com/v1beta1/beacons?pageSize=3' -H 'Authorization: Bearer MY_SECRET_OAUTH_TOKEN_HERE' 
{ 
    "beacons": [ 
    { 
     ... 
    }, 
    { 
     ... 
    }, 
    { 
     ... 
    } 
    ], 
    "nextPageToken": "Civ55nT/+//+zN7Pzs/Nz8zPy8/Kz8nPyM/Hz8bPns+dz5zPm8+ayMmdnf/+EAMhko+M85V85JMx00LwZ+bdJe8xuNeGz7eSTJAxP86ZtGulO0o5AQAEAIsZAABQAFoLCcck85hsjQ0JEAE", 
    "totalCount": "5" 
} 

$ curl 'https://proximitybeacon.googleapis.com/v1beta1/beacons?pageSize=3&pageToken=Civ55nT/+//+zN7Pzs/Nz8zPy8/Kz8nPyM/Hz8bPns+dz5zPm8+ayMmdnf/+EAMhko+M85V85JMx00LwZ+bdJe8xuNeGz7eSTJAxP86ZtGulO0o5AQAEAIsZAABQAFoLCcck85hsjQ0JEAE' -H 'Authorization: Bearer MY_SECRET_OAUTH_TOKEN_HERE' 
{ 
    "error": { 
    "code": 500, 
    "message": "Internal error encountered.", 
    "status": "INTERNAL" 
    } 
} 

`` `

+0

Спасибо Дэвида. Учитывая относительную редкость людей, использующих этот API, я предполагаю, что это не будет приоритетом для команды, но я увижу, могу ли я найти, куда отправить билет в Google. –

+0

Тем временем я попытался использовать параметр «pageSize», чтобы узнать, могу ли я увеличить количество возвращаемых результатов, равное общим возможным результатам. Это помогло мне, а не maxResults. –

+0

Я попробовал с 'pageSize = 10000', так как число зарегистрированных маяков в непосредственной близости от этого числа, но я получил только первые 1000 предметов. Но забава здесь не заканчивается, если я попытаюсь снова вызвать API с параметром 'pageToken', я получаю ошибку 400. – Nicocube

1

Когда developping пользовательского клиента я испытал те же 500 ошибка, потому что pageToken представлена ​​в формате JSON не URL-сейф: Вы должны URL-адрес закодировать маркер перед подачей его в качестве url.

Затем пейджинг работал неслучайно: случайные 400 ошибок после нескольких небольших страниц (pageSize 10-100) или второй большой страницы (pageSize 1000).

Теперь с использованием official java client с такими же полномочиями Oauth2 я могу надежно перебирать через 20 000 + маяков (с pageSize 1000), поэтому я, вероятно, пропустил что-то с кодировкой параметров, и API действительно работает.

2

После траты времени на эту проблему (другая проблема с отправкой запроса на отправку с пустым корпусом запроса для активации/деактивации маяков ...), моя команда решила использовать сказочный Google Proximity Beacon API Client, который решает все эти проблемы и дает вам много преимуществ лучший опыт, модели и функции.

Обратите внимание, что список может все еще есть некоторые проблемы с большим списком и маленькими маяками на странице: 20 000 маяков, 100/страницы, 1000 моделирования ==> ~ 80% сделано