【发布时间】:2014-12-13 17:03:41
【问题描述】:
我正在使用 Retrofit 向 Spring Boot 服务发布请求,但始终称为失败回调方法。这是我的简化代码:
Spring Boot 服务(控制器):
@RestController
public class ServController {
@Autowired
private UserRepository userRepository;
@RequestMapping(value = "/user", method = RequestMethod.POST)
public Boolean signUpUser(@RequestBody User user)
{
return true;
}
}
我的客户端界面:
public interface ChainApi {
public static final String USER_PATH = "/user";
@POST(USER_PATH)
public void signUpUser(@Body User user, Callback<Boolean> callback);
}
异步 POST 请求:
User user = new User();
user.setId(12);
user.setName(nameEtx.getText().toString());
user.setEmail(emailEtx.getText().toString());
user.setPassword(passwordEtx.getText().toString());
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(Constant.URL_LOCALHOST)
.build();
ChainApi service = restAdapter.create(ChainApi.class);
service.signUpUser(user, new Callback<Boolean>() {
@Override
public void success(Boolean aBoolean, Response response) {
Log.i(TAG, "Succesfull");
@Override
public void failure(RetrofitError error) {
Log.i(TAG, "Error " + error.getMessage()); // 400 Bad Request
}
});
这是我的用户类(POJO):
@JsonIgnoreProperties(value = { "additionalProperties"})
public class User {
@JsonProperty("id")
private Integer id;
@JsonProperty("name")
private String name;
@JsonProperty("password")
private String password;
@JsonProperty("email")
private String email;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
// methods
}
注意:我正在 Android 中开发,当从 Postman 发出手动 POST 请求时,我得到 200 OK。 此外,我收到 logcat 消息:400 Bad Request
【问题讨论】:
-
发布您遇到的错误
-
在最后部分更新了我的帖子
-
听起来您的服务器不喜欢您的请求中的某些内容,也许其中缺少某些内容。查看服务器上的日志,这些可能会为您指明正确的方向。
-
谢谢米格尔,我解决了这个问题。我能够获得完整的服务器响应,这一部分:“异常”:“org.springframework.http.converter.HttpMessageNotReadableException”,“消息”:“无法读取 JSON:无法识别的字段 \”additionalProperties\“。现在我的问题是如果改造有注释 @JsonIgnoreProperties(value = { "additionalProperties"}) 和 @JsonIgnore ,为什么要使用这个字段。
-
您应该使用这些详细信息更新您的问题。我已经添加了一个答案,如果有帮助,请告诉我。
标签: java post spring-boot retrofit