我知道這個問題已經發布在這裏,但我堅持一點,我沒有得到確切的解決方案,所以再次張貼在這裏。JERSEY的POST請求中的JSON對象用於Web服務器的JERSEY
我已經用Jersey編寫了一個簡單的RESTFul Web服務。 在POST方法中,我在請求中傳遞JSON對象。
我正在使用帶註釋的@XmlRootElement類,並且POST方法也使用了相同的方法。
代碼看起來像如下 - 我的POJO類
@XmlRootElement
public class WelcomeForm {
public String title;
public WelcomeForm(){
title = "";
}
public WelcomeForm(String inTitle){
title = inTitle;
}
}
Web服務是如下
@Path("/welcome")
public class WelcomeImpl {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public WelcomeForm welcome(WelcomeForm welcomeFormObject) {
WelcomeForm form = new WelcomeForm();
form.title = " Connected ... ";
System.out.println("welcomeFormObject *** "+welcomeFormObject.title);
return form;
}
}
當我試圖通過傳遞一個JSON對象的要求來運行一個簡單的HTML代碼出現錯誤爲
/* in browser I get error as follows */
XMLHttpRequest cannot load http://localhost:8081/ws/welcome. Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.
/* in eclipse I get error as follows */
Apr 27, 2013 5:59:51 AM com.sun.jersey.server.wadl.generators.AbstractWadlGeneratorGrammarGenerator attachTypes
INFO: Couldn't find grammar element for class java.lang.String
Apr 27, 2013 5:59:51 AM com.sun.jersey.server.wadl.generators.AbstractWadlGeneratorGrammarGenerator attachTypes
INFO: Couldn't find grammar element for class java.lang.String
Apr 27, 2013 5:59:51 AM com.sun.jersey.server.wadl.generators.AbstractWadlGeneratorGrammarGenerator attachTypes
INFO: Couldn't find grammar element for class java.lang.String
Apr 27, 2013 5:59:51 AM com.sun.jersey.server.wadl.generators.AbstractWadlGeneratorGrammarGenerator attachTypes
INFO: Couldn't find grammar element for class java.lang.String
Apr 27, 2013 5:59:51 AM com.sun.jersey.server.wadl.generators.AbstractWadlGeneratorGrammarGenerator attachTypes
INFO: Couldn't find grammar element for class java.lang.String
Apr 27, 2013 5:59:51 AM com.sun.jersey.server.wadl.generators.AbstractWadlGeneratorGrammarGenerator attachTypes
INFO: Couldn't find grammar element for class java.lang.String
Apr 27, 2013 5:59:51 AM com.sun.jersey.server.wadl.generators.AbstractWadlGeneratorGrammarGenerator attachTypes
INFO: Couldn't find grammar element for class java.lang.String
然後,我添加自定義文件管理器類,來解決訪問控制原產地不允許錯誤
public class CustomResponseFilters implements ContainerResponseFilter { public ContainerResponse filter(ContainerRequest request, ContainerResponse response) { // After request processed response.getHttpHeaders().add("Access-Control-Allow-Origin", "http://MyIPAddress:8080"); response.getHttpHeaders().add("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS"); response.getHttpHeaders().add("Access-Control-Allow-Headers", "Content-Type"); return response; }
}
但沒有有用的它,我再次得到了同樣的錯誤。
這裏是我的html代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function CallService() {
var obj = {};
obj.title ="Hello!!!";
console.log(obj.title);
$.ajax({
type: "POST",
url: "http://MyIPAddress:8081/ws/welcome",
data: JSON.stringify(obj),
contentType: "application/json; charset=utf-8",
dataType: "application/json",
success: function (response) {
console.log(" **** success ** "+response);
}
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type=button onclick="CallService()" name="Button1" value="Button1" />
</div>
</form>
</body>
</html>
那麼,什麼是錯的呢?我錯過了什麼嗎? 當我們得到Access-Control-Allow-Origin錯誤? 在web.xml文件,我已經做了修改提過濾器類
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>com.ws.form.CustomResponseFilters</param-value>
</init-param>
我缺少別的?
你試過response.getHttpHeaders()。添加(「訪問控制允許來源「,」*「);而不是你的IP地址? – 2013-04-29 14:25:33
謝謝你解決了。但奇怪的是,我第一次嘗試這個,但我身穿球衣1.6。但現在運動衫1.7運行。現在它工作正常,但在eclipse中發出警告,因爲com.sun.jersey.server.wadl.generators.AbstractWadlGeneratorGrammarGenerator attachTypes 信息:無法找到類java.lang的語法元素。字符串 – Sadanand 2013-05-01 02:04:45
也請一些人解釋我爲什麼我們需要過濾器?使用JSON或XML輸入請求POST方法時究竟發生了什麼? – Sadanand 2013-05-01 02:15:25