我想使用 POST http 事件从 java 应用程序/小程序上传文件。我想避免使用 SE 中不包含的任何库,除非没有其他(可行的)选项。
到目前为止,我只提出了非常简单的解决方案。
- 创建字符串(缓冲区)并用兼容的标头(http://www.ietf.org/rfc/rfc1867.txt)填充它
- 打开与服务器 URL.openConnection() 的连接并将此文件的内容写入 OutputStream。
我还需要手动将二进制文件转换为 POST 事件。
我希望有一些更好,更简单的方法来做到这一点?
问问题
15144 次
2 回答
8
您需要使用java.net.URL
和java.net.URLConnection
类。
http://java.sun.com/docs/books/tutorial/networking/urls/readingWriting.html有一些很好的例子
这是一些快速而讨厌的代码:
public void post(String url) throws Exception {
URL u = new URL(url);
URLConnection c = u.openConnection();
c.setDoOutput(true);
if (c instanceof HttpURLConnection) {
((HttpURLConnection)c).setRequestMethod("POST");
}
OutputStreamWriter out = new OutputStreamWriter(
c.getOutputStream());
// output your data here
out.close();
BufferedReader in = new BufferedReader(
new InputStreamReader(
c.getInputStream()));
String s = null;
while ((s = in.readLine()) != null) {
System.out.println(s);
}
in.close();
}
请注意,在将 POST 数据写入连接之前,您可能仍需要 urlencode() 。
于 2008-11-27T15:34:40.837 回答
3
您需要了解在较新版本的 HTTP 中使用的分块编码。Apache HttpClient 库是一个很好的学习参考实现。
于 2008-11-24T16:11:40.717 回答