gpt4 book ai didi

java - 上传文件时如何从HttpEntity中删除请求 header

转载 作者:行者123 更新时间:2023-12-01 19:41:29 25 4
gpt4 key购买 nike

我正在尝试通过REST API向mft服务器发送一些消息,并且正在使用MultipartHttpEntityBuilder生成消息,但是与原始消息一起,一些不需要的标头和其他数据也已附加。我发现了类似的问题MultipartEntityBuilder: Omit Content-Type and Content-Transfer,但这很有帮助。

我的代码段:

HttpPut putRequest = new HttpPut(MFTSERVER_REST_LINK);

MultipartEntityBuilder builder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addBinaryBody("something","<head><content>xyz</content></head>".getBytes(), ContentType.APPLICATION_XML,"fileName");
HttpEntity httpEntity = builder.build();
putRequest.setEntity(httpEntity) ;

httpClient.execute(putRequest);


预期内容将写入文件:

<head><content>xyz</content></head>


但是,实际上写入文件:

--p13fxV0SO5Y6zSxYnGPJlfGPgX8snL
Content-Disposition: form-data; name="something"; filename="fileName"
Content-Type: application/xml; charset=ISO-8859-1

<head><content>xyz</content></head>
--p13fxV0SO5Y6zSxYnGPJlfGPgX8snL--


有人可以帮我解决这个问题吗?

最佳答案

如果要在帖子正文中写入Byte数据。然后,您应该使用ByteArrayEntity而不是MultipartEntityBuilder。因为,用doWriteTo中的AbstractMultipartForm方法。您无法删除或跳过不需要的标头以将其写入文件。

 void doWriteTo(
final OutputStream out,
final boolean writeContent) throws IOException {

final ByteArrayBuffer boundary = encode(this.charset, getBoundary());
for (final FormBodyPart part: getBodyParts()) {
writeBytes(TWO_DASHES, out);
writeBytes(boundary, out);
writeBytes(CR_LF, out);

formatMultipartHeader(part, out);

writeBytes(CR_LF, out);

if (writeContent) {
part.getBody().writeTo(out);
}
writeBytes(CR_LF, out);
}
writeBytes(TWO_DASHES, out);
writeBytes(boundary, out);
writeBytes(TWO_DASHES, out);
writeBytes(CR_LF, out);
}


您会看到,要写入输出流的元素的列表依次是边界,标头,主体,然后再次是边界。因此,如果您想用字节写一些内容。然后,您应该使用 ByteArrayEntity

byte[] b = "This is hello".getBytes("UTF-8");
putRequest.setEntity(new ByteArrayEntity(b));

关于java - 上传文件时如何从HttpEntity中删除请求 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59170102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com