【发布时间】:2015-08-20 14:58:36
【问题描述】:
我在 Android 上的 REST API 中使用 HttpGet 方法,但我遇到了问题。我得到了响应,但我无法创建正在检索的对象。我把我的AsyncTask放在这里:
class FindCar extends AsyncTask<Integer, Integer, Void> {
protected void onPreExecute(){
}
protected Void doInBackground(Integer... idCar) {
String name = "";
String url = "http://IP of my computer/project/cars/" + idCar[0].intValue();
HttpClient httpClient = new DefaultHttpClient();
HttpGet method = new HttpGet(url);
method.setHeader("content-type", "application/json");
try {
HttpResponse resp = httpClient.execute(method);
String respStr = EntityUtils.toString(resp.getEntity());
Log.d("prove", respStr); //Here I get {"name":"Car1"}
JSONObject obj = new JSONObject(respStr);
name = obj.getString("name");
Log.d("prove", name); //Nothing appears
} catch (Exception ex) {
}
return null;
}
protected void onProgressUpdate(){
}
protected void onPostExecute(){
}
}
为什么,如果我的响应正在被检索,对象没有被创建? 我做错了吗?
编辑:我做了很多证明,在我的真实代码中我有respStr,但我复制了我之前制作的证明。对不起。
提前致谢!
【问题讨论】:
-
请有人解释一下为什么不赞成?
-
投反对票的不是我,但我想是因为您的问题是“为什么这不起作用”。您是否尝试将
Log.d("prove", ex.getMEssage);放入catch(Exception ex)中?它可能会让某人崩溃,但如果你不检查它,你永远不会知道。 -
考虑到
respStr节目和name,我猜这是一个格式错误的 JSON 字符串。 -
@Budius 我知道我提出了为什么它不起作用,但我把我的例子放在了我尝试过的地方,这就是我不理解它的原因。在捕获日志中它没有显示,所以我想它不会去那里。
-
如果你学会了如何调试任何东西,接下来的步骤是什么?下一个断点,一行一行地走。
标签: android http-get jsonobject