Я пытаюсь получить новую веб -сервис REST с земли, используя Spring и Jackson для обработки конечных точек REST и отображения объектов. При использовании встроенного Tomcat, который поставляется с Spring-Boot-Starter-Web, обе конечные точки, показанные ниже, работают, как и ожидалось. Когда я переключаюсь на внешний экземпляр Tomcat, расширяя «SpringBootServletInitializer» на своем основном классе, служба загружается, а конечная точка TestCall работает, но inputSt не удается с ошибкой: 'Content-Type' Application/json; charset = utf-8 «Не поддерживается». Я пробовал вручную применять различные настройки потребителей/производителей в конечной точке, наряду со значениями по умолчанию без повезло. Какие намеки я смог найти, указывающий на проблему с картированием объектов JSON, но я наткнулся на то, почему картирование работает со встроенным Tomcat, но дает дико разные результаты на внешнем Tomcat той же версии. Кто -нибудь может указать мне правильное направление? Заранее спасибо! < /P>
Версия Spring: 6.2.1 < /p>
Джексон Версия: 2.18.2 < /p>
tomcat Версия, как встроенная, так и внешняя: 10.1.34 < /p>
класс контроллера REST: < /p>
@RestController
public class PdfrmRestController {
// this endpoint only works with the embedded tomcat
@PostMapping(value = "/inputTest")
ResponseEntity inputTest(@RequestBody Inbound in) {
System.out.println("input accepted " + in.getInput().getCorrType());
return ResponseEntity.ok("input valid! " + in.getInput().getCorrType());
}
// this endpoint works either way
@GetMapping("/testCall")
ResponseEntity testCall() throws Exception {
System.out.println("testCall invoked");
return ResponseEntity.ok("test call");
}
}
< /code>
inbound.java & pdfrminput.java < /p>
public class Inbound {
@JsonProperty("PDF_R_M")
PDFRMInput input;
public PDFRMInput getInput() {
return input;
}
public void setInput(PDFRMInput input) {
this.input = input;
}
}
public class PDFRMInput {
private String corrType;
public String getCorrType() {
return corrType;
}
public void setCorrType(String corrType) {
this.corrType = corrType;
}
}
< /code>
Основные методы для каждой версии: < /p>
//embedded tomcat
@SpringBootApplication
public class PdfrmEmbedded {
public static void main(String[] args) throws Exception {
new SpringApplicationBuilder()
.bannerMode(Banner.Mode.OFF)
.sources(WebServiceContextSingleton.class)
.run(args);
}
}
//external tomcat (extends is the only change)
@SpringBootApplication
public class PdfrmMain extends SpringBootServletInitializer {
public static void main(String[] args) throws Exception {
new SpringApplicationBuilder()
.bannerMode(Banner.Mode.OFF)
.sources(WebServiceContextSingleton.class)
.run(args);
}
}
< /code>
json полезной нагрузки для обоих тестов, используя SoapUI: < /p>
POST http://localhost:8080/inputTest HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/json
Content-Length: 49
Host: localhost:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.5 (Java/16.0.1)
{
"PDF_R_M": {
"corrType": "corrTypeVal"
}
}
< /code>
Результаты при запуске встроенной версии Tomcat: < /p>
HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 24
Date: Tue, 28 Jan 2025 21:41:10 GMT
Keep-Alive: timeout=60
Connection: keep-alive
input valid! corrTypeVal
< /code>
Результаты при развертывании на внешнем Tomcat: < /p>
2025-01-28T16:42:59.156-05:00 INFO 27892 --- [ main] org.apache.catalina.startup.Catalina : Server startup in [13536] milliseconds
2025-01-28T16:47:27.172-05:00 DEBUG 27892 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet : POST "/pdfrm-webapp/services/rest/inputTest", parameters={}
2025-01-28T16:47:27.258-05:00 DEBUG 27892 --- [nio-8080-exec-5] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.fde.pdfrm.rest.PdfrmRestController#inputTest(Inbound)
2025-01-28T16:47:27.330-05:00 DEBUG 27892 --- [nio-8080-exec-5] o.s.web.method.HandlerMethod : Could not resolve parameter [0] in org.springframework.http.ResponseEntity com.fde.pdfrm.rest.PdfrmRestController.inputTest(com.fde.pdfrm.data.Inbound): Content-Type 'application/json;charset=UTF-8' is not supported
2025-01-28T16:47:27.339-05:00 WARN 27892 --- [nio-8080-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'application/json;charset=UTF-8' is not supported]
2025-01-28T16:47:27.339-05:00 DEBUG 27892 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet : Completed 415 UNSUPPORTED_MEDIA_TYPE
Подробнее здесь: https://stackoverflow.com/questions/793 ... sing-issue
Spring RestController json ⇐ JAVA
Программисты JAVA общаются здесь
1738102215
Anonymous
Я пытаюсь получить новую веб -сервис REST с земли, используя Spring и Jackson для обработки конечных точек REST и отображения объектов. При использовании встроенного Tomcat, который поставляется с Spring-Boot-Starter-Web, обе конечные точки, показанные ниже, работают, как и ожидалось. Когда я переключаюсь на внешний экземпляр Tomcat, расширяя «SpringBootServletInitializer» на своем основном классе, служба загружается, а конечная точка TestCall работает, но inputSt не удается с ошибкой: 'Content-Type' Application/json; charset = utf-8 «Не поддерживается». Я пробовал вручную применять различные настройки потребителей/производителей в конечной точке, наряду со значениями по умолчанию без повезло. Какие намеки я смог найти, указывающий на проблему с картированием объектов JSON, но я наткнулся на то, почему картирование работает со встроенным Tomcat, но дает дико разные результаты на внешнем Tomcat той же версии. Кто -нибудь может указать мне правильное направление? Заранее спасибо! < /P>
Версия Spring: 6.2.1 < /p>
Джексон Версия: 2.18.2 < /p>
tomcat Версия, как встроенная, так и внешняя: 10.1.34 < /p>
класс контроллера REST: < /p>
@RestController
public class PdfrmRestController {
// this endpoint only works with the embedded tomcat
@PostMapping(value = "/inputTest")
ResponseEntity inputTest(@RequestBody Inbound in) {
System.out.println("input accepted " + in.getInput().getCorrType());
return ResponseEntity.ok("input valid! " + in.getInput().getCorrType());
}
// this endpoint works either way
@GetMapping("/testCall")
ResponseEntity testCall() throws Exception {
System.out.println("testCall invoked");
return ResponseEntity.ok("test call");
}
}
< /code>
inbound.java & pdfrminput.java < /p>
public class Inbound {
@JsonProperty("PDF_R_M")
PDFRMInput input;
public PDFRMInput getInput() {
return input;
}
public void setInput(PDFRMInput input) {
this.input = input;
}
}
public class PDFRMInput {
private String corrType;
public String getCorrType() {
return corrType;
}
public void setCorrType(String corrType) {
this.corrType = corrType;
}
}
< /code>
Основные методы для каждой версии: < /p>
//embedded tomcat
@SpringBootApplication
public class PdfrmEmbedded {
public static void main(String[] args) throws Exception {
new SpringApplicationBuilder()
.bannerMode(Banner.Mode.OFF)
.sources(WebServiceContextSingleton.class)
.run(args);
}
}
//external tomcat (extends is the only change)
@SpringBootApplication
public class PdfrmMain extends SpringBootServletInitializer {
public static void main(String[] args) throws Exception {
new SpringApplicationBuilder()
.bannerMode(Banner.Mode.OFF)
.sources(WebServiceContextSingleton.class)
.run(args);
}
}
< /code>
json полезной нагрузки для обоих тестов, используя SoapUI: < /p>
POST http://localhost:8080/inputTest HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/json
Content-Length: 49
Host: localhost:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.5 (Java/16.0.1)
{
"PDF_R_M": {
"corrType": "corrTypeVal"
}
}
< /code>
Результаты при запуске встроенной версии Tomcat: < /p>
HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 24
Date: Tue, 28 Jan 2025 21:41:10 GMT
Keep-Alive: timeout=60
Connection: keep-alive
input valid! corrTypeVal
< /code>
Результаты при развертывании на внешнем Tomcat: < /p>
2025-01-28T16:42:59.156-05:00 INFO 27892 --- [ main] org.apache.catalina.startup.Catalina : Server startup in [13536] milliseconds
2025-01-28T16:47:27.172-05:00 DEBUG 27892 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet : POST "/pdfrm-webapp/services/rest/inputTest", parameters={}
2025-01-28T16:47:27.258-05:00 DEBUG 27892 --- [nio-8080-exec-5] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.fde.pdfrm.rest.PdfrmRestController#inputTest(Inbound)
2025-01-28T16:47:27.330-05:00 DEBUG 27892 --- [nio-8080-exec-5] o.s.web.method.HandlerMethod : Could not resolve parameter [0] in org.springframework.http.ResponseEntity com.fde.pdfrm.rest.PdfrmRestController.inputTest(com.fde.pdfrm.data.Inbound): Content-Type 'application/json;charset=UTF-8' is not supported
2025-01-28T16:47:27.339-05:00 WARN 27892 --- [nio-8080-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'application/json;charset=UTF-8' is not supported]
2025-01-28T16:47:27.339-05:00 DEBUG 27892 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet : Completed 415 UNSUPPORTED_MEDIA_TYPE
Подробнее здесь: [url]https://stackoverflow.com/questions/79395288/spring-restcontroller-json-parsing-issue[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия