Android - JSONObject 不起作用
Android - JSONObject doesn't work
我在 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
但我复制了我之前所做的证明。对不起。
提前致谢!
我是什么?
而不是这样做:
JSONObject obj = respJSON.getJSONObject(i);
这样做:
JSONObject obj = new JSONObject(respStr);
你在 respStr
中得到了回应,但你似乎没有在任何地方使用它,你得到了 respJSON
,这是谁知道的,你出于未知原因使用它,更不用说你了使用 i
不知从何而来。您应该像这样创建您的回复 JSON:
String respStr = EntityUtils.toString(resp.getEntity());
JSONObject obj = new JSONObject(respStr);
解决方案:
终于找到解决办法了。我做了什么?
去掉这句话:
name = obj.getString("name");
然后重写一遍(和之前完全一样)。
并且有效!太不可思议了...
如果有人知道这里发生了什么,请告诉我。我对此很感兴趣。
我在 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
但我复制了我之前所做的证明。对不起。
提前致谢!
我是什么?
而不是这样做:
JSONObject obj = respJSON.getJSONObject(i);
这样做:
JSONObject obj = new JSONObject(respStr);
你在 respStr
中得到了回应,但你似乎没有在任何地方使用它,你得到了 respJSON
,这是谁知道的,你出于未知原因使用它,更不用说你了使用 i
不知从何而来。您应该像这样创建您的回复 JSON:
String respStr = EntityUtils.toString(resp.getEntity());
JSONObject obj = new JSONObject(respStr);
解决方案:
终于找到解决办法了。我做了什么?
去掉这句话:
name = obj.getString("name");
然后重写一遍(和之前完全一样)。
并且有效!太不可思议了...
如果有人知道这里发生了什么,请告诉我。我对此很感兴趣。