无法找到MessageBodyReader

我有这个界面:

@Path("inbox") public interface InboxQueryResourceTest { @POST @Path("{membershipExternalId}/query") @Consumes(MediaType.APPLICATION_XML) @Produces("multipart/mixed") public MultipartOutput query(@PathParam("membershipExternalId") final String membershipExternalId, @QueryParam("page") @DefaultValue("0") final int page, @QueryParam("pageSize") @DefaultValue("10") final int pageSize, @QueryParam("sortProperty") final List sortPropertyList, @QueryParam("sortReversed") final List sortReversed, @QueryParam("sortType") final List sortTypeString, final InstanceQuery instanceQuery) throws IOException; } 

我已经实现了返回MultipartOutput的方法。 我从Fiddler发布了一个xml查询,我收到的结果没有任何问题。

但我已经为同一个界面做了集成测试,我发送相同的对象,我把响应像:

 final MultipartOutput multiPartOutput = getClient().query(getUserRestAuth(), 0, 25, null, null, null, instanceQuery); 

但是在这里,所以从集成测试中,我收到一个奇怪的错误:

无法找到内容类型为multipart / mixed的BorderBodyReader; boundary =“74c5b6b4-e820-452d-abea-4c56ffb514bb”并输入类org.jboss.resteasy.plugins.providers.multipart.MultipartOutput

任何人有任何想法为什么只有在集成测试中我收到此错误?

PS:有些人会说我不发送application / xml作为ContentType而是multipart,这当然是假的,因为对象用所需的@XmlRootElement等注释,否则Fiddler的POST都不会起作用。

你可以试试这个:

 ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance(); providerFactory.registerProvider(org.jboss.resteasy.plugins.providers.multipart.MimeMultipartProvider.class); 

在classpath中包含多段编码的相应resteasy插件吗? (esteasy-多提供者)。

尝试将此方法添加到测试类中。 这将注册已在您的服务器上注册的默认内置提供程序。

 @BeforeClass public static void registerProviders() { ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance(); RegisterBuiltin.register(providerFactory); }