2011-12-26 89 views
0

我有一個REST Web服務返回一個JAXB對象。我已經爲該方法提供了一個Mediatype作爲JSON。我正在使用ajaxForm插件將一些數據發送到此WebService。REST返回xml

問題是,儘管在Web服務中給予JSON作爲mediatype,並且在客戶端javascript中將其作爲dataType,但我仍然只獲取xmlDocument作爲返回的對象。

這是web服務簽名。我正在使用Glassfish 3.1,並且所有功能都得到了正確執行(在server.log中看到了消息)。

@Path("GetJson") 
public class GetJson 
{ 
    private static Logger logger = Logger.getLogger("GetJson"); 
    @POST 
    @Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON}) 
    public Exceldatalist getJson(@Context HttpServletRequest request) 
{ 

這是客戶端代碼。形式是:

<form id="form3" action="http://comp1:8080/RestWSGS/jersey/GetJson" style="display:none" 
     enctype="multipart/form-data" method="post"> 
     <input id ="username" name="username" type="hidden" /> 
     <input id ="purpose" name="purpose" type="hidden" value="new" /> 
     <input id ="filename" name="filename" type="hidden" /> 
     <input id ="password" name="password" type="hidden" value="abc"/> 
     <input id ="company" name="company" type="hidden" value="Third"/> 
     <input id ="ignoreSheet" name="ignoreSheet" type="hidden" /> 
     <input type="submit" style="display:none" /> 
</form> 

給ajaxForm電話是:

$('#form3').ajaxForm({ 
    url: 'http://comp1:8080/RestWSGS/jersey/GetJson', 
     async: false, 
     type: 'POST', 
     cache: false, 
     dataType: 'json', 
     contentType: "multipart/form-data", 
     processData: false, 
     success: function(data) 
     { 
      myData = data; 
      alert('success '+myData); 

     } 
}); 

除了這隻有對提交()爲形式的通話。

我不明白我做錯了什麼。我在這裏卡住了一段時間... 請幫我解開這個!

kavita

+0

REST Web服務是由您託管的還是由其他某些代理機構或客戶託管? – AmGates

+0

comp1上的相同服務器:8080 – kavita

+0

因此,您必須將服務器響應更改爲JSON對象,而不是將其作爲JAX(即)XML對象發送。您的客戶端代碼是正確的,但REST服務器必須以JSON發送響應。 JAX僅以XML格式發送。你已經手動處理它以JSON的形式發送它。 – AmGates

回答

0

這是我做了什麼來解決這個問題。

我從我的項目中刪除了所有球衣和傑克遜罐子。

從glassfish安裝目錄/模塊中刪除所有球衣和傑克遜罐子。得到所有來自運動衫的最新罐子並放在那裏。

然後從glassfish中刪除osgi-cache並重新啓動服務器。這解決了我的問題,雖然改變了什麼,我不能說!