У меня есть приложение Java 8 с рамкой Spring.Нам нужно вызвать операцию исправления с помощью REST из нашего приложения.
Фрагмент кода выглядит следующим образом:
import com.xyz.myobject.ResponseAdmission;
import com.xyz.myobject.RequestAdmission;
@Repository
public class AdmissionRepository {
@Autowired
private RestTemplate restTemplate;
public ResponseObject updateAdmission(RequestAdmission requestAdmission, String admissionId) {
UriBuilder uriBuilder = UriBuilder.fromUri("https://admissionportal.com").path("admission").path("admissionId="+admissionId);
HttpEntity<RequestAdmission> admissionEntity = new HttpEntity<>(requestAdmission, this.getHeaders);
ResponseEntity<ResponseAdmission> responseEntity = this.restServiceESBSupport.exchange(uriBuilder.build(), HttpMethod.PATCH, admissionEntity , ResponseAdmission.class);
return responseEntity.getBody();
}
public MultiValueMap<String, String> getHeaders() {
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Accept", "application/xml");
headers.add("Content-Type", "application/xml");
return headers;
}
}
Когда я выполняю приведенный выше код, когда строка с ключевым словом 'exchange'выполняется, выдает ошибку как:
org.springframework.web.client.RestClientException: Не удалось записать запрос: не найден подходящий HttpMessageConverter для типа запроса [com.xyz.myobject.RequestAdmission] итип содержимого [application / xml]
Когда я отлаживал код, restTemplate зарегистрировал следующие 7 зарегистрированных преобразователей:
ByteArrayHttpMessageConverter,
StringHttpMessageConverter,
ResourceHttpMessageConverter,
SourceHttpMessageConverter,
AllEncompassingFormHttpMessageConverter,
Jaxb2RootElementHttpMessageConverter,
MappingJackson2HttpMessageConverter
Я также попытался добавить следующую строку:
this.restTemplate.getMessageConverters().add(new Jaxb2RootElementHttpMessageConverter());
Но все еще не работает.
RequestAdmission и ResponseAdmission являются объектами JAXB POJO, сгенерированными из xsds.
Веб-сервис принимает запрос в формеxml и ответ также в виде xml.
Пожалуйста, сообщите.