我正在尝试使用 MapQuest API。API 有点搞笑,需要一个 JSON 字符串作为输入。执行此代码时,我已验证串在一起的 URL 是正确的,但在调用HTTPGet(url.toString())
. 我做了一些研究,发现这可能是由于缺少证书造成的,但我只使用了 http 连接,而不是 https。当然在httpGet之后还有更多的工作要做,但是我只贴了相关的代码。不会抛出任何错误,代码只是简单地停止执行。我使用了基本相同的代码,只是用于解析其他 RESTFUL API 的 URL 略有不同。有什么想法吗?
private JSONObject callMapQuestGeoCoder(Location location)
{
String APIkey=decryptKey(MapQuestEncryptedKey);
StringBuilder url=new StringBuilder();
url.append("http://open.mapquestapi.com/geocoding/v1/reverse?key="+APIkey);
url.append("&callback=renderReverse");
url.append("&json={location:{latLng:{lat:"+location.getLatitude());
url.append(",lng:"+location.getLongitude());
url.append("}}}");
HttpGet httpGet = new HttpGet(url.toString());
Log.v(TAG,""+httpGet);
编辑:根据建议,我将代码卡在 try catch 中,并获得了此堆栈跟踪(仅修改为删除我的 API 密钥,并稍微更改位置)。无效的字符是{
字符。
10-26 17:42:58.733: E/GeoLoc(19767): Unknown Exception foundjava.lang.IllegalArgumentException: Illegal character in query at index 117: http://open.mapquestapi.com/geocoding/v1/reverse?key=API_KEY&callback=renderReverse&json={location:{latLng:{lat:33.0207687439397,lng:-74.50922234728932}}}