Tôi đang cố gắng để gửi đến một dịch vụ còn lại sử dụng vào mùa xuân cho android (Tôi mới ở đây)đối tượng còn lại POST sử dụng mùa xuân cho android
Các dịch vụ yên tĩnh có cấu trúc
@POST
@Path("/ider")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public SearchOutRO hashTrackInJSON(SearchInRO in);
này với (mã đối tượng rút ngắn):
public class SearchInRO implements Serializable {
private Double latitud;
private Double longitud;
}
public class SearchOutRO implements Serializable {
private Integer searchId;
}
vì vậy tôi đang cố gắng này (từ android)
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;
}
và nhận được ngoại lệ này:
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]
Ông có thể giúp tôi chỉ ra những gì tôi làm sai (và làm thế nào làm cho nó phải).
Tôi nghĩ rằng nó có thể là "Cơ thể" MultiValueMap.
Cảm ơn trước
EDIT: tôi đã cố gắng những gì @Krisl gợi ý. Tôi thành công để kết nối với phía máy chủ, nhưng có vẻ như đối tượng là không chính xác marshalled.
WARNING: javax.xml.bind.UnmarshalException
- with linked exception:
[javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"latitud"). Expected elements are <{}searchInRO>]
Tôi sẽ đánh giá cao bất kỳ ý tưởng nào.
Bạn có quyền truy cập vào các dữ liệu phía máy chủ các đối tượng ('SearchInRO',' SearchOutRO') ở phía máy khách? – Perception
có, cả hai được thực hiện tại địa phương –
Bạn nên sử dụng chúng sau đó, ở phía máy khách. Thay vì bản đồ nhiều giá trị, tạo một đối tượng 'SearchInRO', cư trú nó và lưu nó vào HttpEntity của bạn. Tôi cũng không nghĩ rằng bạn cần 'FormHttpMessageConverter'. – Perception