我正在尝试从googleplaces api的结果中创建一个json对象。但是一行代码导致了很多问题。我的问题是如何找到问题所在。我似乎无法捕获正确的异常(虽然我在调试时是一个菜鸟)。我传入的网址具有以下价值: https://maps.googleapis.com/maps/api/place/search/json?location=34.7,-86.5&radius=16000&types=food&name=mcdonalds&sensor=true&key=(myApiCodeWhichImNOTPostingHere)
^我确实有正确的apicode,链接适用于android。
这是有问题的方法(突出显示导致问题的行)。
public static JSONObject getTheJSON(String url){
JSONObject json=null;
try{
DefaultHttpClient myHttpClient = new DefaultHttpClient();
HttpPost myHttpPost = new HttpPost(url);
//this line below is giving me problems (jumps streight to the catch Exception)
HttpResponse response = myHttpClient.execute(myHttpPost);
//this line above is giving me problems(jumps streight to the catch Exception)
String data = EntityUtils.toString(response.getEntity());
json= new JSONObject(data);
//parse the JSONObject
} catch (UnsupportedEncodingException e){e.printStackTrace();}
catch (ClientProtocolException e){e.printStackTrace();}
catch (IOException e){e.printStackTrace();}
catch (JSONException e) {e.printStackTrace();}
catch (NullPointerException e){ Log.e("My APP", "exception: " + e.getMessage());}
/* jumps to line below (skips the other catch exceptions)
the log reads "null" since i use the "getMessage()" so thats not useful*/
catch (Exception e ) { Log.e("My APP", "exception: " + e.getMessage());}
return json; // returning the JSON object
}
(编辑): 这是logcat。我认为即时连接工厂客户端错误
10-16 21:11:30.105: E/My APP(980): exception
10-16 21:11:30.345: E/MapActivity(980): Couldn't get connection factory client
答案 0 :(得分:1)
您可能需要检查SSL设置。您正在呼叫https:// url
答案 1 :(得分:1)
不使用e.getMessage()
,而是使用e.printStackTrace()
(在Log.e()
方法之外,但在catch
子句中),这样您就可以追踪真正的问题。如果您没有明白这一点,请在此处发布堆栈跟踪。
编辑(参见公告):
我的LogCat(没有过滤器)总是以正确的方式显示堆栈跟踪,但经过一些搜索后,似乎并非总是如此: See this SO question.
您应该使用Log.e
方法使用三个(!)参数。
例如:
Log.e("My APP", "exception", e);
答案 2 :(得分:1)
我在eclipse中运行了你的代码,运行得很好,给了我一个有效的回复。我认为这可能与SSL有关。您可以通过-Djavax.net.debug=all
启用SSL调试后可以粘贴输出日志吗?