0
我想嘗試使用JQuery AJAX將JSON數據發送到JAX-RS Web服務,但是我面臨一個問題。從JavaScript發送JSON到JAX-RS
我在JAX-RS上的方法使用JSON並生成JSON,但是當我試圖發送JSON數據時,我的方法沒有收到任何參數。我錯過了什麼?
這裏我已經試過
function callApi(counter){
var apiDat = {param1:counter};
$.ajax({
type: 'POST',
url: 'http://localhost:8080/xdbg/webresources/generic/value',
data: JSON.stringify(apiDat),
crossOrigin: true,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
crossDomain: true,
success: function(data) {
console.log(data);
}
});
}
$(function() {
callApi(123);
});
上應注意,我使用的方法調用CORS:
@Path("generic")
public class GenericResource implements ContainerResponseFilter{
@Context
private UriInfo context;
@Override
public void filter(final ContainerRequestContext requestContext,
final ContainerResponseContext cres) throws IOException {
cres.getHeaders().add("Access-Control-Allow-Origin", "*");
cres.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
cres.getHeaders().add("Access-Control-Allow-Credentials", "true");
cres.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
cres.getHeaders().add("Access-Control-Max-Age", "1209600");
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("/value")
public String GetValue(
@DefaultValue("") @QueryParam("param1") String param1
)throws Exception{
System.out.println("value = " + param1);
JSONObject outputJsonObj = new JSONObject();
outputJsonObj.put("output", param1);
return outputJsonObj.toString();
}
這裏是JSON格式:
{"output":"123"}
我錯過了什麼? 謝謝
已經嘗試過您的解決方案,我得到了'value = com.sun.xml.rpc.processor.modeler.j2ee.xml.string @ 875ffd'。即使我嘗試使用註解'@XmlAccessorType(XmlAccessType.FIELD)' '@XmlType(name =「param」,propOrder = { 「param1」 })'仍然得到相同的輸出 – NPE
問題來自param1,I使用'string'而不是'String'。感謝您的協助。 – NPE