如何发送Jersey multipart但每个文件的内容类型不同

时间:2017-10-17 17:38:25

标签: java jersey

我不确定在多部分请求期间是否可以使用不同的Content-Type标头设置正文部分。我已经尝试用字符串构建整个请求,但端点不接受base64字符串,使413request太大。我正在使用的端点的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--"))));

有人能告诉我是否有其他方式将内容类型附加到身体部位,或者这是不可能的?

1 个答案:

答案 0 :(得分:0)

我的印象是,必须单独输入泽西的内容标题,然后添加文件部分,但实际上,添加文件部分无论如何都会添加标题。所以只是一个误解,通过适当阅读文档来解决。