将 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 服务的主要内容,如果未能解决你的问题,请参考以下文章