2011-01-27 9 views
0

私は、xmlファイルを消費するJava WebServiceセットアップを持っていて、クライアントが要求するものに基づいてxmlまたはjsonを生成できるようにしたいと考えています。私はJersey RESTメソッドを読んでこれが可能であることを知っていますが、この情報を抽出する方法は示されていません。私はまた、Googleのすべてを見ているが、これの例を見つけることができないようです。クライアントがREST Webサービスに返す形式を区別する方法は?

http://wikis.sun.com/display/Jersey/Overview+of+JAX-RS+1.0+Featuresは、私が最初に参照していたサイトであり、可能であることを示しています。クライアントのリクエストを実際に区別する方法を知る手助けをすることができるかどうかは疑問でした。 htmlヘッダーにありますか?体?もしそうなら、それを抽出する適切な方法は何ですか?

これは私のメソッドが現在のように見えますが、私は接続に関して何の問題もなく、クライアントが返品の種類として何を要求しているかを知るだけです。事前に

@POST
@Path("getStatisticData")
@Produces ({"application/xml","application/json"})
@Consumes ("application/xml")
public String getStatisticData(@FormParam("xmlCoords") String xmlFile) throws Exception{

感謝。

答えて

2

あなたは@HeaderParam注釈を使用して、それを抽出することができます。

... 
public String getStatisticData(@HeaderParam("Accept") String accept, 
    @FormParam("xmlCoords") String xmlFile) throws Exception { 

    ... 

} 
+0

ありがとう、これはまさに私が探していた機能でした。 – Mike

1

要求のAcceptヘッダーは、クライアントがサーバーにどのような方法をサポートしているかを示すために使用されます。

+0

申し訳ありませんが、私はもう少し明確にしておく必要がありますあなたは、私は受け入れるヘッダーがある場合は、XMLを返すことができていますように、私はその情報を抽出する方法を知っています"application/xml"を返し、 "application/json"の場合はjsonを返します。 – Mike

0

クライアントは、HTTPヘッダーを設定することができた場合は、それを行うための適切な方法は、Acceptヘッダーを使用することです:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

これが不可能な場合は、要求されたタイプは、引数として渡すことができ。

また、2つの異なるWebサービスを公開することもできます.1つはXMLを返し、もう1つはJSONを返します。各Webサービスは同じコードを使用しますが、使用するフォーマットを指定するパラメータを使用します。

関連する問題