Android - JSONObject不起作用

时间:2015-08-20 14:58:36

标签: android http-get jsonobject

我在Android上的HttpGet中使用REST API方法,我遇到了问题。我得到了响应,但我无法创建它被检索的对象。我把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,但我复制了之前的证明。抱歉。

提前致谢!

3 个答案:

答案 0 :(得分:1)

解决方案:

最后我得到了解决方案。我做了什么?

删除这句话:

name = obj.getString("name");

再次重写(与以前完全相同)。

并且有效!真是不可思议......

如果有人知道这里发生了什么,请告诉我。我真的很感兴趣。

答案 1 :(得分:0)

我是什么?

而不是这样做:

public void PopulateAssignToComboBox(ArrayList members)
    {
        _editForm.cb_editAssignTo.Items.Clear();
        var source = new BindingSource();
        source.DataSource = members;
        col_assignedToTemplate.DataSource = source;
    }

这样做:

JSONObject obj = respJSON.getJSONObject(i);

答案 2 :(得分:0)

你在respStr得到了回复,但你似乎没有在任何地方使用它,你得到了respJSON谁知道什么,你使用它的原因不明,更不用说你使用{ {1}}无处不在。您应该像这样创建响应JSON:

i