2

我正在尝试通过我的 java 代码发送多部分表单数据帖子。有人可以告诉我如何在下面设置内容长度吗?当我们使用实现 ContentDescriptor 接口的 InputStreamBody 时,似乎涉及到标头。添加内容后,在 InputStreamBody 上执行 getContentLength 会给我-1。我对它进行了子类化,以便为 contentLength 提供我的字节数组的长度,但不确定 ContentDescriptor 所需的其他标头是否会设置为正确的 POST。

HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(myURL);
ContentBody cb = new InputStreamBody(new ByteArrayInputStream(bytearray), myMimeType, filename);
//ContentBody cb = new ByteArrayBody(bytearray, myMimeType, filename);

MultipartEntity mpentity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
mpentity.addPart("key", new StringBody("SOME_KEY"));
mpentity.addPart("output", new StringBody("SOME_NAME"));
mpentity.addPart("content", cb);
httpPost.setEntity(mpentity);
HttpResponse response = httpclient.execute(httpPost);

HttpEntity resEntity = response.getEntity();
4

1 回答 1

3

我是您注释掉的 ByteArrayBody 类的作者。

我写它是因为我遇到了和你一样的问题。原始的 Jira 票在这里:https ://issues.apache.org/jira/browse/HTTPCLIENT-1014

所以,既然你已经有了一个 byte[],要么将 HttpMime 升级到最新版本,4.1-beta1,它包括这个类。或者将 Jira 问题中的代码复制到您自己的项目中。

ByteArrayBody 类将完全满足您的需求。

于 2010-12-28T22:08:34.080 回答