В настоящее время я пишу программу, которая должна преобразовывать все адреса из базы данных в соответствующие ей координаты широты / долготы.
Для этого я использую 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.
Если это работает так, как задумано, я был бы рад получить совет о том, как решить эту проблему, или, возможно, решение для проверки достоверности данных токенов.