Я новичок в WebServices. Я работаю над приложением, где я использую AnhularJs1.x на стороне клиента, который отправляет данные в Spring Rest Controller.415 Неподдерживаемый тип носителя (org.springframework.web.client.HttpClientErrorException)
Архитектура приложения основана на микросервисах. Я могу получить данные от углового до контроллера останова, который находится в той же войне.
С этого контроллера я звоню в службу, которая внутренне вызывает другой микросервис, который взаимодействует с базой данных.
Когда я посылаю данные, полученные в моем переднем конце контроллера к другому микро-службе я получаю 415 Unsupported Media Type (org.springframework.web.client.HttpClientErrorException)
Ниже приведен мой передний конец контроллер который находится в той же войне, как angularJS
@RequestMapping(value = "/servicearticles", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ServiceArticle> saveData(@RequestBody List<ServiceArticle> serviceArticleList){
System.out.println("In savedata");
System.out.println(serviceArticleList.toString());
try {
if(null != serviceArticleList && serviceArticleList.size() >0){
serviceArticleAdminService.insertData(serviceArticleList);
}else{
logger.error("File is empty. No data to save");
}
Я могу получить данные в этом-регуляторе: [ServiceArticle [ArticleID = 17070, ProductCode = 1000, ProductName = Parcel бизнеса-зона, зона = 1], ServiceArticle [ articleId = 17071, productCode = 1001, productName = Зона бизнес-зоны, зона = 4], Сервисная статья [articleId = 17070, productCode = 1012, productName = Бизнес-зона, зона = 5], Сервисная статья [articleId = 17070, productCode = 1000, productName = Business Parcel zone, zone = 1] , ServiceArticle [ArticleID = 17070, ProductCode = 1000, ProductName = Parcel бизнеса-зона, зона = 2]]
Когда я называю по-разное microservice из моего класса serviceImpl я получаю ошибку неподдерживаемого типа медиа
Кода для serviceImpl класс
private final String URI = "http://localhost:8082/admin/import/servicearticles";
@Override
public void insertData(List<ServiceArticle> serviceArticles) {
logger.error("Inside insertData() in service");
RestTemplate restTemplate = new RestTemplate();
try {
restTemplate.postForObject(URI, serviceArticles, ServiceArticle.class);
} catch (ResourceAccessException e) {
logger.error("ServiceArticleAdmin Service Unavailable.");
Ниже приведен код контроллера в разных микросервисах, который соответствует этому вызову
@RequestMapping(value = "/import/servicearticles", method = RequestMethod.POST, consumes= MediaType.APPLICATION_JSON_VALUE , produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ServiceArticle> addAll(@RequestBody List<ServiceArticle> serviceArticles) {
List<ServiceArticle> serviceArticlesAdded = serviceArticleAdminService.addAll(serviceArticles);
return new ResponseEntity(serviceArticlesAdded, HttpStatus.OK);
}
Я добавил ниже зависимостей в моей pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.8.6</version>
</dependency>
У меня есть следующее определение бина в моем сервлет-context.xml
<bean
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonMessageConverter" />
</list>
</property>
</bean>
<!-- To convert JSON to Object and vice versa -->
<bean id="jsonMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
</bean>
Пожалуйста, помогите мне понять, где я делаю ошибку. Есть ли способ, я могу установить тип ответа как приложения/JSON, когда я вызова метода restTemplate.postForObject
Я проверил с помощью клиента REST плагин его там работает, но не через мой Java код. Пожалуйста помоги.
Спасибо за ответ @Eien, я пытался с этим кодом, я получаю org.springframework.web.client.HttpServerErrorException: ошибка сервера 500 – AkashSharma
Возникла ли ошибка 500 из http: // localhost: 8082/admin/import/servicesarticles? – Eien
Да оно приходит, когда restTemplate.exchange() вызывается, который сопоставляется с URI вы упомянули – AkashSharma