Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HttpTime 4.0.3内容长度设置中的InputStreamBody_Java_Post_Multipartform Data - Fatal编程技术网

Java HttpTime 4.0.3内容长度设置中的InputStreamBody

Java HttpTime 4.0.3内容长度设置中的InputStreamBody,java,post,multipartform-data,Java,Post,Multipartform Data,我正试图通过我的java代码发送一个由多部分组成的formdata帖子。有人能告诉我如何在下面设置内容长度吗??当我们使用实现ContentDescriptor接口的InputStreamBody时,似乎涉及到一些头文件。添加内容后,在InputStreamBody上执行getContentLength会得到-1。我对它进行了子类化,为contentLength指定了字节数组的长度,但不确定ContentDescriptor所需的其他头是否会被设置为正确的POST HttpClient http

我正试图通过我的java代码发送一个由多部分组成的formdata帖子。有人能告诉我如何在下面设置内容长度吗??当我们使用实现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();

我是你注释掉的ByteArrayBody类的作者

我写这篇文章是因为我面临着和你一样的问题。Jira的原始票在这里:

因此,由于您已经有一个字节[],请将httpime升级到最新版本4.1-beta1,其中包括该类。或者将Jira问题中的代码复制到您自己的项目中


ByteArrayBody课程将完全满足您的需要。

您好,谢谢您的建议。我在使用该类时遇到以下错误。。。HttpTime和httpclient是否都必须为4.1-beta1?这是目前的设置,我有你的建议后<代码>java.lang.AbstractMethodError位于org.apache.http.entity.mime.HttpMultipart.doWriteTo(HttpMultipart.java:169),org.apache.http.entity.mime.HttpMultipart.writeTo(HttpMultipart.java:191),org.apache.http.entity.mime.multipartity.writeTo(multipartity.java:180),org.apache.http.impl.entity.EntitySerializer.serializer(EntitySerializer.java:97)Hi,还有,我如何设置多部分消息的内容编码?当我查询编码时,我得到了空值。非常感谢您的帮助。是的,两者都应该是4.1-beta。您可以将标题设置为所需的值并将其添加到请求中。我一直在尝试使用ByteArrayBody,但它不起作用。奇怪的是,使用FilePart works。但我需要传递ByteArray,而不是硬盘上的某个文件。我尝试了使用FilePartSource和ByteArrayPartSource的MultiPartRequestEntity,这也只适用于FilePartSource,而不适用于ByteArrayPartSource。我必须做些什么才能使ByteArray工作,还是HttpClient对ByteArray有问题?