2011-09-14 10 views
0

Jerseyと一緒にJavaで安らかなWebサービスを実装しようとしています。 クライアント側とサーバー側の間で通信するために、私はXMLを監視しています。 私はすでにJSONを試しました。 JSONを使用する場合はジャージーXML(JSON以外のカプセル化が必要なオブジェクト)のRESTfulサービス

、カプセル化は次のようにPOJO・オブジェクトである:

@XmlRootElement 
public class MyPojo { 
    public int a; 
    public int[] b; 
} 

その後、私はちょうど

public String classname(MyPojo p) 

のように休憩クラスのヘッダを得たが、私のようなヘッダを必要とします

public String classname(int a, int [] b) 

Rest-Headersを読み込んでフォーム要素を自動的に作成します。

@Consumes("application/xml") 
public classname methodname(@QueryParam("a") Integer a, @QueryParam("b") IntArray b) 

が動作するはずです: 例があることを見せてくれました。 質問:このメソッドのXMLリクエスト(XMLでJSON.stringify()など)を作成するにはどうすればよいですか?これを行うより良い方法がありますか?

答えて

0

私が質問を理解しているかどうかわかりませんが、いくつかのヒントを提供しようとします。そうでない場合は、アプリについてもっと詳しく共有してください(GETやPOSTリクエストの場合はこれが2つのパラメータを持つことが重要な理由など)

リクエストエンティティでXMLまたはJSONを送信する必要がある場合POSTリクエストでは)、複数のパラメータでこれらを取得することはできません。上記のように単一のオブジェクトパラメータを使用しなければなりません。何あなたができることは以下の通りです:

@POST 
@Consumes("application/xml") 
public ClassName postMethod(MyPojo p) { 
    return postMethod(p.a, p.b); 
} 

public ClassName postMethod(int a, int[] b) { 
    // do something 
} 
あなたがHTMLフォームを使用して投稿している場合は、あなたが本当に通常は、次の操作を行い、XML/JSONを必要としない場合

または、:

@POST 
@Consumes("application/x-www-form-urlencoded") 
public ClassName postMethod(@FormParam("a") Integer a, @FormParam("b") String b /*I think arrays are not supported - will have to parse it yourself*/) { 
    // do something 
} 
関連する問題