【发布时间】:2012-08-28 22:57:57
【问题描述】:
我想在创建整个数据之前开始向 HTTP 服务器发送数据。
当您使用 java.net.HttpURLConnection 时,这很容易:
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setChunkedStreamingMode(0);
dos = new DataOutputStream(urlConnection.getOutputStream());
...
dos.writeShort(s);
...
但由于某些原因,我想使用 org.apache.http 包(我必须开发一个基于包 org.apache.http 的库)。我已经阅读了它的文档,但是我没有找到与上面的代码类似的任何东西。是否可以在知道最终数据大小之前使用 org.apache.http 包将数据分块发送到 HTTP 服务器?
提前感谢所有建议;)
【问题讨论】:
-
HttpCore 似乎支持 Chunk 编码。如果
isChunked()返回 true,则可以分块发送 HttpEntity。如何使用它们或使用什么合适的实体我还不知道。 -
我之前知道org.apache.http包支持分块发送内容,但是当http连接建立时我找不到发送大小未知的内容的方法。但是我更深入地研究了文档,我在 BasicHttpEnitity (hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/…) 中找到了一个方法 setContent(InputStream instream)。就是这样;)
-
然后回答你自己的问题。它很可能会帮助其他尝试这样做的人。 :)