将 JSON 数组发布到 Android 中的 Web 服务

Posted

技术标签:

【中文标题】将 JSON 数组发布到 Android 中的 Web 服务【英文标题】:Posting a JSON array to webservice in Android 【发布时间】:2011-02-05 13:47:22 【问题描述】:

我遇到了一些问题,这应该是一个相当简单的任务。我只需要将一个带有单个 JSON 对象的 JSON 数组发布到我的 Web 服务。整个 URL 请求需要这样格式化:

@987654321@"key1":"val1","key2":"val2"....]

我终其一生都无法弄清楚如何使用 HttpPost 附加“location_data”位。 下面是一段代码 sn-p 来演示我正在使用的 HTTP 连接方法:

    HttpClient hClient = new DefaultHttpClient();
    HttpPost hPost = new HttpPost(url);

    try 
        hPost.setEntity(new StringEntity(string));
        hPost.setHeader("Accept", "application/json");
        hPost.setHeader("Content-type", "application/json");

        //execute request
        HttpResponse response = (HttpResponse) hClient.execute(hPost);
        HttpEntity entity = response.getEntity();

我没有任何语法错误,我的代码可以正常访问服务器,只是格式不符合服务器所需。任何有关如何将我的请求格式化为我需要的格式的帮助将不胜感激!

【问题讨论】:

【参考方案1】:

在“?”之后将键/值数据附加到 URL是 GET 不是 POST。

这是在 Java 中 POST 数据的方法:

String urlText = "http://www.myserver.com/myservice.php";
String postContent = "location_data=[\"key1\":\"val1\",\"key2\":\"val2\"]";
try 
  HttpURLConnection c = (HttpURLConnection) new URL(urlText).openConnection();
  c.setDoOutput(true);
  OutputStreamWriter writer = new OutputStreamWriter(c.getOutputStream(), "UTF-8");
  writer.write(postContent);
  writer.close();
 catch (IOException e) 
  e.printStackTrace();
 

【讨论】:

感谢吉姆的信息!只是为了说清楚,如果您为我编写的代码是 POST,那么它仍然会使用“?”来格式化它。喜欢我需要吗?另外,我如何使用您的方法检索和存储服务器响应?再次感谢 “?”表示法意味着 GET,所以你不需要这个。我从未见过以这种方式将 JSON 发送到服务器,尽管这是可能的。服务器响应将作为 c.getInputStream() 在连接上返回

以上是关于将 JSON 数组发布到 Android 中的 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

Json对象到android中的对象数组

Android/Java 中的 JSON 数组迭代

Android/Java 中的 JSON 数组迭代

如何通过Android将参数发布到PHP后检索json数组

如何仅将一些选定的 Json 数组和 Json 对象从 Url 解析到 android 设备

如何将json数据从json数组解析到recyclerview java android?