Android用のSpringを使用して残りのサービスにPOSTしようとしています(私はこれが初めてです)
安らかなサービスはこの構造を持っています
@POST
@Path("/ider")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public SearchOutRO hashTrackInJSON(SearchInRO in);
with(短縮されたオブジェクトコード):
public class SearchInRO implements Serializable {
private Double latitud;
private Double longitud;
}
public class SearchOutRO implements Serializable {
private Integer searchId;
}
だから私はこれを試しています(アンドロイドから)
String url = BASE_URL + "ider";
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
MultiValueMap<String, String> body = new LinkedMultiValueMap<String, String>();
body.add("searchInRO[latitud]", String.valueOf(user.getLatitud()));
body.add("searchInRO[longitud]", String.valueOf(user.getLongitud()));
HttpEntity<?> requestEntity = new HttpEntity<Object>(body, requestHeaders);
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(new FormHttpMessageConverter());
messageConverters.add(new StringHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);
try {
ResponseEntity<SearchOutRO> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, SearchOutRO.class);
HttpStatus status = response.getStatusCode();
if (status == HttpStatus.CREATED) {
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
そしてこの例外を取得します:
org.springframework.web.client.RestClientException: Could not write request: no suitable HttpMessageConverter found for request type [org.springframework.util.LinkedMultiValueMap] and content type [application/json]
私が間違っていることを指摘するのを手伝ってもらえますか? (そして、それを正しくする方法)。
「本体」のMultiValueMapである可能性があると思います。
前もって感謝します
編集: @Krislが提案したことを試しました。サーバー側への接続には成功しましたが、オブジェクトが正しくマーシャリングされていないようです。
WARNING: javax.xml.bind.UnmarshalException
- with linked exception:
[javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"latitud"). Expected elements are <{}searchInRO>]
アイデアをいただければ幸いです。