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