我一直在谷歌周围的互联网寻找一个(正确)的方式来@Consume在我的服务器上的Web资源中的“应用程序/ json”文件。发布json到java服务器
我使用glassfish应用服务器,所以它是一个Java资源。
这里是调用javascvript代码:
var url="/MBC/pages/lives/";
var mygetrequest=new ajaxRequest();
mygetrequest.onreadystatechange=function(){
if (mygetrequest.readyState==4){
if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
var render="";
var JsonIn =JSON.parse(mygetrequest.responseText);
if(JsonIn.error==undefined){
render="generic error";
}
}else
render=mygetrequest.responseText ;
document.getElementById(div).innerHTML=render;
}else{
render="An error has occured making the request";
}
};
var json2Send = "{" +
"boss:\""+location.href.substring(location.href.length-5,location.href.length-4)+"\"," ;
if(document.newLive.bval.value=='')
json2Send+="bands:[],";
else
json2Send+="bands:["+document.newLive.bval.value+"],";
json2Send+="data:\""+document.newLive.dateEvent.value+"\"," +
"address:{street:\""+document.newLive.street.value+"\"," +
"number:\""+document.newLive.number.value+"\"," +
"city:\""+document.newLive.city.value+"\"," +
"region:\""+document.newLive.region.value+"\"," +
"state:\""+document.newLive.state.value+"\"}" +
"}";
mygetrequest.open("POST", url, true);
mygetrequest.setRequestHeader("Content-type", "application/json");
mygetrequest.send(json2Send);
其中json2Send是JSON字符串,客户端必须发送到服务器。
这里是不是在服务器端代码:
@POST
@Path("configLiveBand")
@Consumes("application/json")
@Produces("application/json")
public String liveBandInsert(String jsonIn, @Context HttpServletRequest request) throws ParseException{
现在我问你我有什么为了让服务器读取输入JSON字符串与JavaScript来做到。 显然,我上面描述的方式不起作用。服务器返回
HTTP Status 405 -
type Status report
message
descriptionThe specified HTTP method is not allowed for the requested resource().
看我的问题在互联网上,我发现涉及“的BufferedReader”类“的ReadLine()”方法解决方案。我不喜欢这个解决方案。我更喜欢,如果它是一种方式,注入json文件而不是逐行读取输入字符串。
任何帮助广为接受 感谢
当然,告诉我,如果我必须明确的其他有关的问题,我有我还没有写的问题。 –
如果您删除了@ @ Produces和@ Consumes注解,那么是否会调用'liveBandInsert()'?您的浏览器发送的请求实际上是什么样的(请检查您的浏览器的开发者工具)?如果您使用类似'curl'的方式向具有相同样本数据的网址发布邮件,它会起作用吗?如果删除'@ Consumes'和'@ Produces'并更改为'@ GET',您可以在浏览器中访问URL吗?请在问题中回答,评论可能太小:) –
如果我删除了@ @ Produces和@ Consumes注释,则服务器返回与前面相同的描述。你知道吗?问题是'@ Post'注释。它适用于get,但不适用于'@ POST'。所以,这是一个JavaScript问题。我不正确的发送请求到服务器。让我发布整个电话... –