0

我正在开发一个项目,在该服务器端我为我的 APIS 使用了 REST 服务。如果我在类的主要功能中使用 REST 服务,它工作正常。但是当我从使用 Quarkus-resteasy 的 servlet 调用它时,它会抛出异常。例外情况如下。

javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request: javax.ws.rs.ProcessingException: RESTEASY003215: could not find writer for content-type multipart/form-data type: org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataOutput

servlet 的主要代码如下。

    String httpURL = "REST api";
    String filePath = "filePath";
    ResteasyClient resteasyClient = null;
    ResteasyWebTarget resteasyWebTarget = null;
    MultipartFormDataOutput multipartFormDataOutput = null;
    GenericEntity<MultipartFormDataOutput> genericEntity = null;
    Response response = null;

    try{
        resteasyClient = new ResteasyClientBuilderImpl().build();
        resteasyWebTarget = resteasyClient.target(httpURL);
        resteasyWebTarget.property("Content-Type", MediaType.MULTIPART_FORM_DATA);
        multipartFormDataOutput = new MultipartFormDataOutput();
        multipartFormDataOutput.addFormData(
                "file",
                new FileInputStream(filePath),
                MediaType.MULTIPART_FORM_DATA_TYPE,
                "fileName");
        genericEntity = new GenericEntity<MultipartFormDataOutput>(multipartFormDataOutput, MultipartFormDataOutput.class);

        // invoke service
        response = resteasyWebTarget
                       .request()
                       .post(Entity.entity(genericEntity, MediaType.MULTIPART_FORM_DATA));

项目的依赖如下。

implementation 'io.quarkus:quarkus-rest-client-jackson'
implementation 'io.quarkus:quarkus-rest-client'
implementation 'io.quarkus:quarkus-resteasy-multipart'
implementation 'io.quarkus:quarkus-resteasy'
implementation 'io.quarkus:quarkus-resteasy-jackson'
implementation 'io.quarkus:quarkus-arc'
testImplementation 'io.quarkus:quarkus-junit5'
testImplementation 'io.rest-assured:rest-assured'

奇怪的是,类的main函数中同样的代码可以运行良好。我被这个问题困扰了一天,如果你能帮助我,我将不胜感激。

4

1 回答 1

0

Quarkus 搞砸了 Provider 发现。如果手动添加,可以找到作者。例如:

@Provider
@Produces({"multipart/form-data"})
public class MultiformWriterProvider extends MultipartFormDataWriter{}
于 2022-02-01T15:29:48.670 回答