【问题标题】:JSON Object as @RequestBody on Spring 4.16在 Spring 4.16 上作为 @RequestBody 的 JSON 对象
【发布时间】:2015-06-21 04:54:26
【问题描述】:

所以我有这个 android 应用程序,它使用 POST 方法为 jsonObjectRequest(我正在使用 volley)发送 jsonObject。 JSON 文件已发送,但服务器(这是我使用 Spring 顺便说一句的地方)没有响应。代码很像这些。

安卓代码:

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

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

【问题讨论】:

  • 你有什么异常吗?

标签: java android json spring spring-mvc


【解决方案1】:

从您提供的代码中,我怀疑 JSONObject 与服务器上的 Auth 没有相同的字段名称。 也有可能HttpMessageConverter 用于将对象从请求映射到控制器中的对象没有正确完成他的工作。

我会首先尝试从 body 接收参数,而不是 Auth 对象。如果 Spring 映射它比 HttpMessageConverter 好,那就是问题,如果它不是 @RequestBody 的使用,我不能来自你提供的代码。

【讨论】:

  • 感谢您的提问.. 现在可以正常工作了.. 问题是 android 客户端没有发送正确的内容类型。很快,我想念 getBodyContentType() 覆盖..
猜你喜欢
  • 2017-08-23
  • 2011-10-25
  • 2014-08-05
  • 2017-09-15
  • 2011-12-05
  • 2018-01-23
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
相关资源
最近更新 更多