我正在做一个在服务器端使用REST服务作为APIS的项目。如果我在类的主要功能中使用REST服务,那么它运行得很好。但是,当我使用Quarkus从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.MultipartFormDataOutputservlet的主要代码如下所示。
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'奇怪的是,类的主函数中相同的代码可以很好地运行。我被这个问题困扰了一天,如果你能帮助我,我将不胜感激。
发布于 2022-02-01 15:29:48
夸库斯搞砸了提供者的发现。如果您手动添加它,则可以找到写入器。例如:
@Provider
@Produces({"multipart/form-data"})
public class MultiformWriterProvider extends MultipartFormDataWriter{}https://stackoverflow.com/questions/68754152
复制相似问题