如何(简单地)从java生成POST http请求来进行文件上传

我想使用POST http事件从java application / applet上传文件。 我想避免使用SE中未包含的任何库,除非没有其他(可行的)选项。
到目前为止,我只提出了非常简单的解决方案。
– 创建字符串(缓冲区)并用兼容的标题填充它( http://www.ietf.org/rfc/rfc1867.txt )
– 打开与服务器URL.openConnection()的连接,并将此文件的内容写入OutputStream。
我还需要手动将二进制文件转换为POST事件。

我希望有更好,更简单的方法来做到这一点?

您需要使用java.net.URLjava.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()。

您需要了解较新版本的HTTP中使用的分块编码。 Apache HttpClient库是一个很好的参考实现,可供学习。