如何发送 Jersey multipart 但每个文件的内容类型不同
How to send Jersey multipart but with a different content type for each file
我不确定您是否可以在多部分请求期间使用不同的 Content-Type headers 设置 body 部分。我已经尝试用字符串构建整个请求,但端点不接受 base64 字符串,也提供 413request large.The API 我正在使用的端点的文档似乎需要这种结构。目前我在下面有这个但是它抛出关于在 BodyParts 之间混合 .field
的错误。
addressString += "\r\n\r\n"
+ "Content-ID: proofOfAddress\r\n"
+ "Content-Type: application/octet-stream\r\n"
+ "Content-Transfer-Encoding: base64\r\n"
+ "\r\nContent-Disposition: form-data; filename=" + addressProofName + "\r\n";
idString += "Content-ID: proofOfIdentityDocument\r\n"
+ "Content-Type: application/octet-stream\r\n"
+ "Content-Transfer-Encoding: base64\r\n"
+ "Content-Disposition: form-data; filename=" + idProofName + "\r\n";
multipartEntity = new FormDataMultiPart()
.field("payload", body, MediaType.APPLICATION_JSON_TYPE)
.field("address", addressString, MediaType.TEXT_PLAIN_TYPE)
.bodyPart((FileDataBodyPart)files.get(0))
.field("id", idString, MediaType.TEXT_PLAIN_TYPE)
.bodyPart((FileDataBodyPart)files.get(0))
.type(Boundary.addBoundary(new MediaType("multipart", "form-data", Collections.singletonMap(Boundary.BOUNDARY_PARAMETER, "--XXX--"))));
谁能告诉我是否有其他方法可以将内容类型附加到 body 部分,或者这不可能吗?
我的印象是球衣的内容 headers 必须单独输入,然后添加文件部分,但实际上,添加文件部分无论如何都会添加 headers。所以只是一个误会,通过正确阅读文档解决了。
我不确定您是否可以在多部分请求期间使用不同的 Content-Type headers 设置 body 部分。我已经尝试用字符串构建整个请求,但端点不接受 base64 字符串,也提供 413request large.The API 我正在使用的端点的文档似乎需要这种结构。目前我在下面有这个但是它抛出关于在 BodyParts 之间混合 .field
的错误。
addressString += "\r\n\r\n"
+ "Content-ID: proofOfAddress\r\n"
+ "Content-Type: application/octet-stream\r\n"
+ "Content-Transfer-Encoding: base64\r\n"
+ "\r\nContent-Disposition: form-data; filename=" + addressProofName + "\r\n";
idString += "Content-ID: proofOfIdentityDocument\r\n"
+ "Content-Type: application/octet-stream\r\n"
+ "Content-Transfer-Encoding: base64\r\n"
+ "Content-Disposition: form-data; filename=" + idProofName + "\r\n";
multipartEntity = new FormDataMultiPart()
.field("payload", body, MediaType.APPLICATION_JSON_TYPE)
.field("address", addressString, MediaType.TEXT_PLAIN_TYPE)
.bodyPart((FileDataBodyPart)files.get(0))
.field("id", idString, MediaType.TEXT_PLAIN_TYPE)
.bodyPart((FileDataBodyPart)files.get(0))
.type(Boundary.addBoundary(new MediaType("multipart", "form-data", Collections.singletonMap(Boundary.BOUNDARY_PARAMETER, "--XXX--"))));
谁能告诉我是否有其他方法可以将内容类型附加到 body 部分,或者这不可能吗?
我的印象是球衣的内容 headers 必须单独输入,然后添加文件部分,但实际上,添加文件部分无论如何都会添加 headers。所以只是一个误会,通过正确阅读文档解决了。