0
我想發佈一些JSON數據到澤西框架實現的REST Web服務。我不使用JAXB或jQuery,但只有JavaScript。
我驗證過形成的json是正確的,但是儘管設置了內容類型「application/json」,但在服務器上它被接收爲「application/x-www-form-urlencoded」。
這裏是我的代碼:POST JSON到澤西島服務
<html>
<head>
<script type="text/javascript">
function DisplayFormValues()
{
var str = {};
var elem = document.getElementById('frmMain').elements;
//alert(elem.length);
for(var i = 0; i < elem.length-1; i++)
{
str[elem[i].name] = elem[i].value;
}
document.getElementById('lblValues').innerHTML = str;
var json = JSON.stringify(str);
// construct an HTTP request
var xhr = new XMLHttpRequest();
xhr.open(document.getElementById('frmMain').method,
document.getElementById('frmMain').action);
xhr.setRequestHeader("Content-type", "application/json");
xhr.setRequestHeader("Content-Length",json.length);
xhr.setRequestHeader('Accept', 'application/json');
//alert(json);
// send the collected data as JSON
xhr.send(json);
xhr.onloadend = function() {
// done
}
}
</script>
</head>
<body>
<form id="frmMain" name="frmMain" action="/JerseyTest/rest/postUser"
method="post">
<input name="firstName" value="harry" /> <input name="lastName"
value="tester" /> <input name="toEmail" value="[email protected]" />
<br /> <input type="submit" value="Test"
onclick="DisplayFormValues();" />
</form>
<hr />
<div id="lblValues"></div>
</body>
</html>
在服務器端:
package com.example.jersey.test;
import javax.ws.rs.*;
@Path("/postUser")
public class JsonTest {
@POST
@Consumes("application/json")
@Produces(MediaType.TEXT_PLAIN)
public String pingPong(String json) {
return "Answer is "+ json;
}
}
我新的網絡開發和不知道什麼我在上面的代碼很想念。
這是髖關節,但你有沒有嘗試在'Content-Type'中't'大寫? – 2013-04-05 15:42:17
它只是在大寫字母中,但在檢查請求標題後用小「t」嘗試。仍然沒有運氣。 – Ashwini 2013-04-05 16:55:08