Использование неверных учетных данных возвращает XML вместо JSON при использовании Geocoder.geocode () - PullRequest
0 голосов
/ 05 июня 2019

В настоящее время я пишу программу, которая должна преобразовывать все адреса из базы данных в соответствующие ей координаты широты / долготы. Для этого я использую HERE Geocoding API. Так как эта программа предназначена для нескольких людей, я позволил им ввести свои app_id и app_code вручную. Проблема в том, что если один из учетных данных недействителен, он вернет XML вместо JSON, что вызывает ошибку: (SyntaxError: expected expression, got '<')

Это примерная ссылка, которая вызывается геокодером:

http://geocoder.api.here.com/6.2/geocode.json?xnlp=CL_JSMv3.0.17.0&app_id=invalidCredentialID&app_code=InvalidCredentialCode&street=Haupstr.%2042&postalCode=99880&city=Leina&country=DE&jsoncallback=H.service.jsonp.handleResponse(0)

Я попытался каким-то образом получить доступ к ошибке, но поскольку внутри геокодера уже есть ошибка, мне нужно подождать тайм-аут (30 с) для вызова моего обратного вызова onError. И даже тогда я не получаю код ошибки, такой как "invalidCredentials", а просто объект с номером строки и столбца.

В основном я использую обычный сервис геокодирования

var platform = new H.service.Platform({
  app_id: 'invalidCredentialId',
  app_code: 'invalidCredentialCode'
});
var geocoder = platform.getGeocodingService();

geocoder.geocode({searchText: 'Berlin'}, handleResponse, handleError);

Я не думаю, что это работает как задумано. Функция Geocoder.geocode () ожидает, что значение JSON передаст его функции обратного вызова, но не удается, поскольку она не может проанализировать данные XML в объект JSON.

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

1 Ответ

0 голосов
/ 01 июля 2019

Это потому, что фактическая ошибка (PermissionError) обернута как объект XML. В вашей функции onError вы должны обрабатывать объект xml.

Ниже приведен пример объекта ошибки:

<ns2:Error xmlns:ns2="http://www.navteq.com/lbsp/Errors/1" type="PermissionError" subtype="InvalidCredentials"><Details>invalid credentials for invalidCredentialId</Details></ns2:Error>
...