2009-08-05 113 views
3

我正在編寫一個RESTful Web服務,其中我想返回包含某個結果集的XML。我已經使用XSTREAM並將對象解析爲XML字符串。由於我需要返回這個字符串,我需要知道如何將它傳回給調用客戶端。在REST服務中返回XML響應

一種方法是將RESPONSE返回給調用客戶端。我的示例代碼顯示了我正在嘗試執行的操作。

@Path("somepath") 
public class ClassToReturnXML 
{ 
    public Response methodToReturnXML() 
    { 

     ResponseBuilder builder = new ResponseBuilderImpl(); 
     builder.type(MediaType.TEXT_XML); 
     builder.entity(myXMLString); 
     return builder.build(); 
    } 
} 

不幸的是,它不返回實體,雖然狀態碼是200.我是不是正確地實例化ResponseBuilder?我還看到它應該實例化如下:

ResponseBuilder builder = Response.status(200); 

請建議什麼是返回XML作爲迴應的合適方式。

我在使用APACHE CXF進行重新安裝服務。 (版本2.2.3 - 我猜):D 在此先感謝您的所有幫助。

回答

8

這只是一個清潔問題。它最終奏效了。我最終以下面的方式創建了響應。

Response response = Response.status(200).type(MediaType.TEXT_XML).entity(xmlString).build(); 

它工作得很好。我希望它能幫助別人。

2

HTTP響應是否有正確的內容類型標題來標識它是Xml,即text/xmlapplication\xml?結帳The Proper Content Type for XML Feeds

響應狀態200只是標準HTTP Response Codes中的一個,這意味着請求已成功,因此只有在這種情況下才返回。