Spring 4.16上的JSON Object为@RequestBody

时间:2015-04-15 09:34:47

标签: java android json spring spring-mvc

所以我有这个android应用程序,使用POST方法为jsonObjectRequest(我使用volley)发送jsonObject。 JSON文件已发送但服务器(这是我使用Spring btw的地方)没有响应。代码非常类似于这些。

Android代码:

JSONObject jsonObject = new JSONObject(data);

final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, jsonObject, new Response.Listener<JSONObject>() {
   @Override
   public void onResponse(JSONObject response) {
      try {
          userToken = response.getString(TAG_TOKEN);
   //  blablabla

服务器代码:

@RestController
@RequestMapping("/auth/")
public class AuthController {

String userEmail;
String userPassword;

@RequestMapping(value = "/login", method = RequestMethod.POST)
public LoginResponse loginResponse(@RequestBody Auth auth){

    userEmail = auth.getEmail();
    userPassword = auth.getPassword();
// blablabla

验证对象:

public class Auth {

    private String email;
    private String password;

// blablabla

似乎服务器没有正确地从android客户端接收JsonObject。 (但是,在另一种情况下,服务器能够完美地将JSON发送到Android客户端)。我使用的是spring-4.16,jackson-core,jackson-annotation,jackson-databind(2.2.2)。提前谢谢!

1 个答案:

答案 0 :(得分:0)

从您提供的代码中我首先怀疑的可能是JSONObject与服务器上的Auth没有相同的字段名称。 此外,用于将对象从请求映射到控制器中的对象的HttpMessageConverter可能无法正确执行其工作。

我首先尝试从没有Auth对象的身体接收参数。如果Spring映射的问题比问题HttpMessageConverter好,如果不是@RequestBody的使用,我不能使用你提供的代码。