我正在使用HTTP Get从我的网站检索JSON格式的字符串。
但是,当我尝试创建JSONObject时,没有任何反应。该对象未创建,我无法访问其中的数组或其他任何内容。
我已经检查过我的应用确实获得了正确的字符串,并且格式正确为JSON格式。
我是否必须以某种特定方式声明它或具有单独的try / catch块...?
我的智慧结束了,所以任何帮助都会非常感激......
降低你拥有我在这个问题上所写的所有代码,尽管它并不多,但我被困住了,不知道该去哪里...
public String result, testString;
public TextView resultText;
public String url = "http://www.ace.ucv.ro/android/android.php";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainmenu);
resultText = (TextView) findViewById(R.id.result);
try {
HttpGet httpGet = new HttpGet(url);
result = EntityUtils.toString(new DefaultHttpClient().execute(httpGet).getEntity());
JSONObject jsonObject = new JSONObject(result);
} catch (ParseException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
resultText.setText(result);
}
答案 0 :(得分:1)
您在代码中的URL(http://www.ace.ucv.ro/android/android.php)不会返回Json对象,而是返回JSONArray。
只需用JSONArray替换JSONObject,你就可以了。
答案 1 :(得分:0)
你确定结果中存储的字符串只是一个JSONObject,还是JSONArray?
我记得遇到过类似的问题。
答案 2 :(得分:0)
乍一看,您的代码看起来很熟悉/合理。但也许您应该取消嵌套并记录中间结果 - 这将有助于您了解哪个阶段出错了。例如......
HttpGet httpGet = new HttpGet(url);
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(httpGet);
Log.v("test", "HTTP response = " + response);
HttpEntity entity = response.getEntity();
Log.v("test", "HTTP entity = " + entity);
String content = EntityUtils.toString(entity);
Log.v("test", "HTTP content = " + content);
JSONObject mJsonObj = new JSONObject(mContent);