0

JAXB バインド オブジェクトを生成および使用できるようにジャージー サーバーをセットアップする方法の例をたくさん見つけていますが、クライアントに同じ JAXB バインド オブジェクトをポストさせる方法の例を見つけるのに苦労しています。 この例は、XML でそれを行う方法を示しています。JSONでそれを行う方法を示すものを探しています。

これが可能かどうかさえわかりません。postメソッドの javadocがあいまいです。

私の投稿は次のようになります。

    Client client = Client.create();
    WebResource resource = client.resource(uri);
    ClientResponse response = resource.type(MediaType.APPLICATION_JSON)
      .post(ClientResponse.class, instanceWithXmlRootElementAnnotation);

これを試すと、サーバーがリクエストを取得しますが、のフィールド@FormParamは常に null として送信されます。サーバー側メソッドの署名は次のとおりです。

@POST
@Path("apath")
@Consumes(MediaType.APPLICATION_JSON)
public String postAPath(@FormParam("InstanceWithXmlRootElementAnnotation")
  InstanceWithXmlRootElementAnnotation instanceWithXmlRootElementAnnotation) {
//instanceWithXmlRootElementAnnotation is always null

他に疑問に思っていることは、を使用する必要があるかどうかですinstanceWithXmlRootElementAnnotation。これが従来の Web サービスである場合、JAXB を使用して、クライアントが使用するオブジェクトを生成し、生成されたクラスを送信します。しかし、リンク先の例から収集したものから、男は生成されたクラスではなく、ソースを送信しています。

4

1 に答える 1

1

私は自分でそれを理解しました。問題はサーバー側の問題でした。@FormParamサーバー上の注釈を削除すると、すべてが期待どおりに機能しました。質問と回答を組み合わせることで、他の人に初歩的なチュートリアルを提供します。私のサーバーは次のようになります。

@POST
@Path("apath")
@Consumes(MediaType.APPLICATION_JSON)
public String postAPath(InstanceWithXmlRootElementAnnotation instanceWithXmlRootElementAnnotation) {
于 2013-09-06T19:56:12.957 に答える