我在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
,但我复制了之前的证明。抱歉。
提前致谢!
答案 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