HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(“http://my.server:8080/android/service.php");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair("action", "getjson")); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost);
service.php生成一个json字符串。我该如何从我的手机上获取response?顺便说一句; 我已经将该GSON库排除在外了,我可以在其中使用任何方法吗?
service.php
response
GSON
有更好的方法,对吗?
任何帮助表示赞赏,谢谢
更新:
String json = EntityUtils.toString(response.getEntity());
似乎可以解决问题。只有一个小问题:字符串用方括号括起来[]。我应该手动删除它们吗?它们是由php:s生成的json_encode()
[]
json_encode()
我认为您遇到的问题与我刚遇到的问题类似。如果您运行:
字符串json_string = EntityUtils.toString(response.getEntity()); JSONObject temp1 =新的JSONObject(json_string);
上面的代码将引发异常,并且似乎应归咎于JSON数组括号。但是,最好将JSON数组作为顶级元素!您只需要使用JSONArray()而不是JSONObject:
字符串json_string = EntityUtils.toString(response.getEntity()); JSONArray temp1 =新的JSONArray(json_string);
因此,您必须知道要获取的是JSONArray还是在JSON代码中为JSONObject的单个字典。
如果您习惯使用iOS / Objective-CJSON解析库,那么它们会使用相同的顶级元素来处理JSON字典和json数组,因此转到JAVA /Android世界会使我感到困惑,因为取决于顶级返回。