RestEasy MultipartFormDataOutput 中的键顺序

问题描述 投票:0回答:1

我正在尝试使用 Quarkus 上的 RestEasy 将文档发送到远程 API。

我调用的 API 要求我发送包含 3 个文件的

multipart/form-data
主体。问题是,API 关心它们指定的顺序,如果它们的顺序错误,将会返回错误。

这个问题看起来与这个问题类似,但是那里的问题涉及服务器返回数据,而我的问题涉及客户端发送数据。无论如何,我发表了一条评论,如果出现解决问题,我会删除这个问题。

这些参数称为

PARAMETERS
INDEX
DATA
,需要按此确切顺序指定并有意大写。我正在使用 MultipartFormDataOutput 来存储要发送的文件,正如另一个问题所暗示的那样,这可能是按字母顺序排序的键的问题。

这是我正在使用的服务接口:

@ApplicationScoped
@RegisterRestClient(configKey = "api-url")
public interface DocuService {

    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_OCTET_STREAM)
    @Path("/send_document")
    String sendDocument(
            @MultipartForm MultipartFormDataOutput data
    );

}

这就是我将文件添加到有效负载并发送它的方式:

MultipartFormDataOutput mpFormData = new MultipartFormDataOutput();
mpFormData.addFormData("PARAMETERS", requestData.getParamFile(), new MediaType("application", "xml"), "parametersFile.xml");
mpFormData.addFormData("INDEX", requestData.getIndexFile(), new MediaType("application", "xml"), "indexFile.xml");
mpFormData.addFormData("DATA", requestData.getDataFile(), new MediaType("application", "json"), "dataFile.json");
docuService.sendDocument(
        mpFormData
);

我找不到指定按键顺序的方法,或者可能找不到允许我这样做的类似对象。也许有人可以帮助我阐明这一点。

提前致谢,祝您有美好的一天! 😉

java multipartform-data quarkus resteasy
1个回答
0
投票

不幸的是没有足够的代表添加到评论线程,所以将使用答案。

我使用了扩展 MultipartFormDataOutput 并使用链接哈希图的方法。不幸的是,在resteasy 3.x中,MultipartFormDataOutput被定为最终版本,因此该解决方法不再有效,因此,如果这是您的解决方案,请注意这一点。

目前我还不知道有什么替代品。

© www.soinside.com 2019 - 2024. All rights reserved.