2012-01-27 43 views
1

我想在Resteasy中實現GET方法。我無法使用QueryParam,因爲有許多搜索參數,包括複雜類型。所以我想到了使用XML。在下面的代碼中,請求和響應都是從模式生成的JAXB類。我的問題是如何客戶端可以傳遞請求XML?Resteasy - GET方法 - 傳遞XML

@GET 
@Path("search") 
@Produces(MediaType.APPLICATION_XML) 
@Consumes(MediaType.APPLICATION_XML) 
public SearchResponse searchTasks(SearchRequest searchReq) 
{ 

這是我用Jersey創建的示例客戶端。當我撥打電話時,我收到「415不支持的媒體類型」。我是否通過了XML?是否可以將XML參數發送到GET方法?

webResource.accept(MediaType.APPLICATION_XML); 
    webResource.type(MediaType.APPLICATION_XML); 

    webResource.entity(req,MediaType.APPLICATION_XML); 

    SearchResponse return1 = webResource.get(SearchResponse.class); 

我在Tomcat中部署這個。

感謝您關注此事。

+0

您的問題已在[Jersey客戶端API WebResource accept()未正確設置MIME頭]中得到解答(http://stackoverflow.com/a/7435940/267197)。 – 2012-01-28 12:40:15

回答

1

錯誤是由於您在發出請求時未設置Content-Type標頭而引起的。確保它設置爲Content-Type: application/xml

在附註中,GET請求通常沒有請求主體,雖然它是可能的。 I suggest against including one,並使用POST方法。

+0

感謝您的回覆。但是下面沒有設置內容類型? - webResource.type(MediaType.APPLICATION_XML); – 2012-01-27 15:33:51

+2

** Arav **是正確的:他試圖設置接受的內容類型,但沒有采用正確的方式:'webResource.accept()'實際上是返回一個'Builder',它應該被進一步使用。 – 2012-01-28 12:42:36

+0

這裏的正確用法的例子會很有幫助。 – Webnet 2013-03-15 14:21:07

相關問題