Web サービスに接続する Android アプリケーションを開発しています。Web サービスから、次のエラーが表示されます。
POST request for "xxx" resulted in 422 (Unprocessable Entity); invoking error handler
私は Android 用の SpringFramework Rest Client を使用しており、次のコードで Web サービスに接続しています。
public static User sendUserPersonalData(User userProfileData)
{
try
{
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json")));
HttpEntity<User> requestEntity = new HttpEntity<User>(userProfileData, requestHeaders);
GsonHttpMessageConverter messageConverter = new GsonHttpMessageConverter();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(messageConverter);
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setReadTimeout(readTimeout);
RestTemplate restTemplate = new RestTemplate(requestFactory);
restTemplate.setMessageConverters(messageConverters);
String url = URL_BASE_WEB + USER_PERSONAL_DATA_CALL;
ResponseEntity<User> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, User.class);
return responseEntity.getBody();
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
ただし、Web サービスは次のような JSON 文字列も返します。
{
"email": [
"is invalid"
],
"birthday": [
"is invalid"
],
"startday": [
"is invalid"
],
"sex_preference": [
"can't be blank"
],
"password": [
"is too long (maximum is 4 characters)"
]
}
例外が発生した場合でも、どうすれば取得できますか?