我当前正在编写一个程序,该程序应该将数据库中的所有地址都转换为其对应的经/纬度坐标。
为此,我使用了HERE地理编码API。
由于该程序适用于多个人,因此我让他们手动输入他们的app_id和app_code。
问题是,如果凭据之一无效,它将返回XML而不是JSON,这将导致错误:
(SyntaxError: expected expression, got '<')
这是一个示例链接,由地址解析器调用:
我试图以某种方式访问该错误,但是由于Geocoder内部已经存在错误,因此我必须等待超时(30s)后才能调用“ 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对象而失败。
如果这能按预期工作,那么我将很高兴为您提供有关如何解决此问题的建议,或者是一种用于测试给定令牌有效性的解决方案。
答案 0 :(得分:0)
这是因为实际错误(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>