如何在Android上设置HttpPut的正文? (不添加库)

时间:2012-02-08 11:56:30

标签: java android

我想将一些数据从Android应用程序上传到Pachube。

[更新:对于2013年阅读此内容的人来说,“Pachube”成为“Cosm”,现在是“Xively”。]

This hurl由他们的documentation提供。

如何通过Android的HttpPut(或HttpPost)实现来实现这一目标?

我真的不想添加任何额外的库,因为我想让应用程序尽可能小。

我已经有一个包含我数据的JSONObject。

2 个答案:

答案 0 :(得分:11)

这是一些伪代码。请注意,您不应在PUT请求中发送表单url编码数据,因为它可能会破坏服务器端OAuth(如果使用):

HttpClient client = new DefaultHttpClient();
HttpPut put = new HttpPut(url);
put.addHeader("Content-Type", "application/json");
put.addHeader("Accept", "application/json");
put.setEntity(new StringEntity(jsonObj.writeValue()));
HttpResponse response = client.execute(put);

答案 1 :(得分:1)

在没有任何其他库的情况下在Java / Android中执行此操作的一种方法是:

URL url = new URL("http://www.example.com/whatever");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod("PUT");
OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream());
out.write("Data you want to put"); // for example your JSON object
out.close();

更新 - 根据评论:

您可以通过致电httpCon.getInputStream()和/或httpCon.getErrorStream()等获取回复。