我正在尝试使用一些JSON数据向我的后端发送POST请求。来自前端的电话看起来像这样:
function register() {
var user = $("#form_reg_username").val();
var pass = $("#form_reg_password").val();
var referal = $("#form_reg_referal").val();
var postbody = {};
var url = "http://" + location.host + "/api/admin/register";
postbody.username = user;
postbody.password = pass;
postbody.referal = referal;
var jsonbody = JSON.stringify(postbody);
console.log(jsonbody);
$.ajax({
type: "POST",
url: url,
data: jsonbody,
dataType: "json",
success: registerHandler()
});
}
生成的日志如下所示:
{"username":"jakob","password":"11111","referal":"urgotislove"}
哪个好。
以下是我在后端处理请求的开始(我正在使用play 2.4)
public Result adminRegister() {
// Generate JSON from postbody
ObjectNode json = Json.newObject();
Logger.info("Body: " + request().body().asText());
JsonNode body = request().body().asJson();
String username = body.get("username").asText();
String password = body.get("password").asText();
String referal = body.get("referal").asText();
...
}
查看我的应用程序日志,Info日志如下所示:
[info] application - Body: null
然后我在第一行尝试获取json值时得到Nullpointer异常。
因此出于某种原因,似乎没有正确接收POST正文。
感谢您提前提供任何帮助。
答案 0 :(得分:0)
事实证明,Postbody已正确转移但由于某种原因,.asText()
以及.asJson()
方法无法正常工作并返回null。
我通过这个小解决方法解决了我的问题:
Http.RequestBody requestBody = request().body();
Map<String, String[]> body = requestBody.asFormUrlEncoded();
String username = body.get("username")[0];
String password = body.get("password")[0];
String referal = body.get("referal")[0];