【问题标题】:Posting a JSON array to webservice in Android将 JSON 数组发布到 Android 中的 Web 服务
【发布时间】: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();

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

【问题讨论】:

    标签: java android eclipse json


    【解决方案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() 在连接上返回
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多