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として送信するのではなく、マルチパートとして送信すると言う人もいます。もちろん、オブジェクトには必要な@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

Try adding this method to your test class. This would register the default built-in providers which are already registered on your server.

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