当前位置: 首页 > 面试题库 >

从HttpResponse获取json

龚弘业
2023-03-14
问题内容

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库排除在外了,我可以在其中使用任何方法吗?

有更好的方法,对吗?

任何帮助表示赞赏,谢谢

更新:

String json = EntityUtils.toString(response.getEntity());

似乎可以解决问题。只有一个小问题:字符串用方括号括起来[]。我应该手动删除它们吗?它们是由php:s生成的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世界会使我感到困惑,因为取决于顶级返回。



 类似资料:
  • 我正在尝试从Akka HttpResponse检索cookie cookie_jar=cookieLib.cookiejar()non_redirecting_opener=urllib2.build_opener(norredirectionprocessor,urllib2.httpcookieprocessor(cookie_jar))response=non_redirecting_ope

  • 问题内容: 我有一个用于刚刚发出的Web请求的HttpResponse对象。响应为JSON格式,因此我需要对其进行解析。我可以以一种荒谬的复杂方式来做到这一点,但是似乎必须有一种更好的方式。 这真的是我能做的最好的吗? 如果有任何不同,我在Android上。 问题答案: 可以更有效地完成两件事: 使用代替,因为它是更快和更小的兄弟。 用于逐行读取,而不是逐字符读取。 如果JSON实际上是一行,那么

  • 问题内容: 我正在解决有关作为服务器响应的JSONObject的问题。 正如您在响应中看到的那样,我正在解析JSONObject并创建syncresponse,synckey作为 JSON对象 createdtrs,modtrs,deletedtrs作为 JSONArray 。我想从Deletedtrs访问JSONObject,以便可以将它们分开并使用这些值。即我想提取公司编号,用户名,日期等。

  • 我有一个简单的取回请求。我不是promise和异步代码方面的专家,但据我所知,fetchurl发送一个请求来打开/获取/发布一个url,并返回传递该内容的promise(响应)。当获取内容时,我可以在文本(response.text())中解析它。解析后的文本/json,无论什么,都会作为数据传递给另一个函数,并在这里进行处理 **JS代码** 因此,如果我获取一个PHP URL,返回一个json

  • 我使用的是akka.http.scaladsl.model.HttpResponse,HttpEntity。 在获得响应之后,它的类型为responseEntity的格式(content-type:'application/json',{MyJSONHERE})。有没有办法从实体中提取我的json。 我尝试了entity.GetDataBytes,它以字节字符串格式给出实体的内容。我想正确阅读JS

  • 在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 在每一个视图函数中必须返回一个HttpResponse对象,当然也可以是HttpResponse子对象 1.不用模板,直接返回数据 from django.http import HttpResponse def index(req