我试图从服务器获得答案并将其转换为JSONObject
。
现在我有了这段代码
private JSONObject sendData(ArrayList<NameValuePair> data, String actionname)
{
// 1) Connect via HTTP. 2) Encode data. 3) Send data.
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new
HttpPost(actionname);
httppost.setEntity(new UrlEncodedFormEntity(data));
HttpResponse response = httpclient.execute(httppost);
// Log.i("postData", response.getStatusLine().toString());
InputStream is = response.getEntity().getContent();
String result = convertStreamToString(is);
// JSONArray jArr = new JSONArray (result);
// int eventID = jArr.getJSONObject(0).getInt("eventID");
JSONObject jObject = new JSONObject(result);
return jObject;
}
catch(Exception e)
{
Log.e("log_tag", "Error: "+e.toString());
}
return null;
}
在result
字符串变量中我有这个
{“status”:{“code”:404,“text”:“Not Found”},“content”:“User 身份验证失败“}
但是在代码字符串JSONObject jObject = new JSONObject(result);
上 - 它返回null
; =((我尝试创建JSONArray
但它返回了我可以从JSONARRAY
创建JSONObject
的扩展名。
答案 0 :(得分:1)
从result
您可以创建JSONArray
,如下所示:
JSONArray finalResult = new JSONArray(new JSONTokener(result));
获得JSONArray
后,您可以循环访问以获取详细信息,如下所示:
for (int i = 0; i < finalResult.length(); i++) {
JSONObject message = finalResult.getJSONObject(i);
String content= message.getString("content");
...
...
}
答案 1 :(得分:0)
我解决了这个问题,但我不明白为什么会这样。可能是我在OOP方面不太好。所以我创建了JSONObject jObject作为类JSONHandler的属性,它具有sendData方法。它变成了工作。如果有人帮我解释原因,我会很高兴。