6

我有这个界面:

 @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<String> sortPropertyList,
                             @QueryParam("sortReversed") final List<Boolean> sortReversed,
                             @QueryParam("sortType") final List<String> sortTypeString,
                             final InstanceQuery instanceQuery) throws IOException;
}

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

但是我已经为同一个接口做了一个集成测试,我发送了相同的对象,我把响应放在:

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

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

找不到内容类型 multipart/mixed;boundary="74c5b6b4-e820-452d-abea-4c56ffb514bb" 和类型类 org.jboss.resteasy.plugins.providers.multipart.MultipartOutput 的 MessageBodyReader

任何人都知道为什么仅在集成测试中我收到此错误?

PS:你们中的一些人会说我没有将 application/xml 作为 ContentType 而是 multipart 发送,这当然是错误的,因为对象是用所需的 @XmlRootElement 等注释的,否则来自 Fiddler 的 POST 都不起作用。

4

3 回答 3

1

你可以试试这个:

ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance();
providerFactory.registerProvider(org.jboss.resteasy.plugins.providers.multipart.MimeMultipartProvider.class);
于 2012-04-09T14:20:02.947 回答
0

是否在类路径中包含用于多部分编码的相应 resteasy 插件?(esteasy-multipart-provider)。

于 2010-03-24T17:33:04.790 回答
-1

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

@BeforeClass
public static void registerProviders() {
    ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance();
    RegisterBuiltin.register(providerFactory);
}
于 2010-03-12T08:51:46.030 回答