Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring从改装中获取空值_Java_Android_Spring_Retrofit - Fatal编程技术网

Java Spring从改装中获取空值

Java Spring从改装中获取空值,java,android,spring,retrofit,Java,Android,Spring,Retrofit,我正试图通过在过去两天里的改装,从Android向Spring发送POST请求。关于这一点,我尝试了很多解决方案,但似乎没有任何效果。所以,在这里请求最终能够得到一些帮助 所以,我试图通过改造将一个简单的对象从Android发送到Spring。从android端,我已经验证了我发送的值,它给了我正确的值。(我已经通过android的调试模式进行了调试)。但在spring方面,我得到了空值 这是我的代码-> 函数foo()->我从中发送请求。 private void foo() {

我正试图通过在过去两天里的改装,从Android向Spring发送POST请求。关于这一点,我尝试了很多解决方案,但似乎没有任何效果。所以,在这里请求最终能够得到一些帮助

所以,我试图通过改造将一个简单的对象从Android发送到Spring。从android端,我已经验证了我发送的值,它给了我正确的值。(我已经通过android的调试模式进行了调试)。但在spring方面,我得到了空值

这是我的代码->

函数foo()->我从中发送请求。

 private void foo() {
            request.setName1("XYZ");
            request.setName2("PQR");
            Api.upload(request, new Callback<BasicResponse>() {
                @Override
                public void onResponse(Call<BasicResponse> call, Response<BasicResponse> response) {
                    Log.d(TAG, "onResponse: Success" + response.toString());
                }

                @Override
                public void onFailure(Call<BasicResponse> call, Throwable t) {
                    Log.d(TAG, "onResponse: Failure");
                }
            });
        }
    }
这是我的Spring控制器方法

@RequestMapping(value = "/UploadRequest",method = RequestMethod.POST,consumes = "application/json", produces = "application/json")
    @ResponseBody
    public void UploadImage(@RequestBody POJO pojo,HttpServletRequest request) {
        if(pojo!=null){
            System.out.println("pojo is not null");
            System.out.println(pojo.getName1());
        }
        else{
            System.out.println("null");
        }
}
我得到的pojo不是null,在pojo.getName1()中,打印的值是null。

 private void foo() {
            request.setName1("XYZ");
            request.setName2("PQR");
            Api.upload(request, new Callback<BasicResponse>() {
                @Override
                public void onResponse(Call<BasicResponse> call, Response<BasicResponse> response) {
                    Log.d(TAG, "onResponse: Success" + response.toString());
                }

                @Override
                public void onFailure(Call<BasicResponse> call, Throwable t) {
                    Log.d(TAG, "onResponse: Failure");
                }
            });
        }
    }
编辑:添加基本应答类

public class BasicResponse {

    private boolean success = Boolean.TRUE;
    private ErrorCode errorCode;
    private String response;
    private Integer totalCount;
    private String callingUserId;

    public BasicResponse() {
        super();
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public ErrorCode getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(ErrorCode errorCode) {
        this.errorCode = errorCode;
        this.success = false;
    }

    public String getResponse() {
        return response;
    }

    public void setResponse(String response) {
        this.response = response;
    }

    public void setResponse(Object response) {
        if (response != null) {
            this.response = GsonUtils.toGson(response);
        }
    }

    public Integer getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

    public String getCallingUserId() {
        return callingUserId;
    }

    public void setCallingUserId(String callingUserId) {
        this.callingUserId = callingUserId;
    }
}

比较响应和您的POJO类。POJO类的实例变量必须与响应中的相同。在您的案例中,名称1和名称2。如果它们在响应中是name1、name2(这意味着如果它们不以大写字母开头,等等),或者不同,则会给您提供
NullPointerException

最有可能的是,name1和name2在json中的名称与POJO和Jackson中的名称不同,当您用@RequestBody注释参数时,with被暗中使用。您无法识别这些参数,因此会得到空值。查看你的json。

你能显示一个响应示例吗?@tm13在spring端它打印的pojo不是null和null,这意味着我的代码接收的pojo对象不是null/所以,你是说我的BasicResponse和pojo类应该是相同的?如果你说Android端和Spring端的POJO类应该是相同的,那么它们是相同的。你能评论或编辑你的答案来展示一个JSON响应的例子吗?更清楚的是,基本响应只是一个带有返回字符串的方法的类,该字符串是要返回的内容@tm13增加了BasicResponse类。我使用的是gson,而不是Jsckson。您能告诉我如何在Spring端检查JSON吗?@RequestMapping(value=“/UploadRequest”,method=RequestMethod.POST,consumes=“application/JSON”,products=“application/JSON”)@ResponseBody public void UploadImage(@RequestBody String pojo,HttpServletRequest request){System.out.println(pojo);}抱歉格式化,但是您可能会得到这样一个想法:返回了带有basicResponse.setResponse(CropimagerRequest)的POJO类;它返回{}“Empty JSON”,但是我还提供了一个方法来检查UploadImage函数中的对象是否为null,并且在该函数中它不是null:(
@RequestMapping(value = "/UploadRequest",method = RequestMethod.POST,consumes = "application/json", produces = "application/json")
    @ResponseBody
    public void UploadImage(@RequestBody POJO pojo,HttpServletRequest request) {
        if(pojo!=null){
            System.out.println("pojo is not null");
            System.out.println(pojo.getName1());
        }
        else{
            System.out.println("null");
        }
}
public class BasicResponse {

    private boolean success = Boolean.TRUE;
    private ErrorCode errorCode;
    private String response;
    private Integer totalCount;
    private String callingUserId;

    public BasicResponse() {
        super();
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public ErrorCode getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(ErrorCode errorCode) {
        this.errorCode = errorCode;
        this.success = false;
    }

    public String getResponse() {
        return response;
    }

    public void setResponse(String response) {
        this.response = response;
    }

    public void setResponse(Object response) {
        if (response != null) {
            this.response = GsonUtils.toGson(response);
        }
    }

    public Integer getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

    public String getCallingUserId() {
        return callingUserId;
    }

    public void setCallingUserId(String callingUserId) {
        this.callingUserId = callingUserId;
    }
}