2017-11-02 8 views
0

text/xml reqでヒットしようとしているジャージーエンドポイント(JAX-RS)があります。私はhttp 415を取り戻しています。なぜ私は理解できません。ここに情報があります。何か案は?ありがとう。私はポストマン(RESTクライアント)を介して、それを押すと送信していますhttp/415、text/xmlを使用してサポートされていないメディアタイプ

@Path("/bid") 
@Produces("text/xml;charset=ISO-8859-1") 
@Consumes({"text/xml", "application/xml"}) 
@Resource 
public class BidController { 

@RolesAllowed("blah") 
@POST 
public Response bid(final HttpServletRequest request) { 

{ "のContent-Typeを": "text/xmlで"}

マイPOSTボディは間違いなく整形式のXMLです。

答えて

1

JAX-RSは、着信XMLをHttpServletRequestに変換する方法がわからないため、415応答が返されています。

あなたは本当に要求にアクセスしたい場合は、あなたが@javax.ws.rs.core.Contextでそれに注釈を付ける必要があります。

@RolesAllowed("blah") 
@POST 
public Response bid(@Context final HttpServletRequest request) { 

しかし、あなたはtext/xmlでそれを打つていると言うように、あなたが実際にしたいことがあります。

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class MyRequest { 

    @XmlElement 
    int field1; 

    @XmlElement 
    String field2; 

    ... 
} 
MyRequestが何かのように宣言されている
@POST 
public Response bid(final MyRequest request) { 
    ... 
} 

<MyRequest> 
    <field1>11327</field1> 
    <field2>some string 
</MyRequest> 

JAX-RS仕様は、着信テキスト/ XMLをデコードし、JAXBを介して発信テキスト/ XMLをエンコードすることができるように実装する必要がありますようにXMLに対応

+0

Thx!それは働いた –

+0

Btw、それはApplication/xmlですか? – vikarjramun

関連する問題