当前位置: 首页 > 知识库问答 >
问题:

RestClientException:SampleRequest没有HttpMessageConverter

容鸿畴
2023-03-14

我是Sping引导的新手,我试图使用RestTemplate调用外部POST API,但得到错误,没有针对SampleRequest的HttpMessageConverter。

import com.SampleRequest;

@RestController
@RequestMapping(path = "/api")
public class TicketAgentController {

private static final Logger LOGGER = LogManager.getLogger(TicketAgentController);

@PostMapping(path = "/TicketAgent", consumes = "application/json", produces = "application/json")
public String createTroubleTicket(@RequestBody SampleRequest request) throws URISyntaxException {

    //Move to Common and service
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.setMessageConverters(getMessageConverters());


    final String baseUrl = "http://172.100.5.89:8095/api/Ticket/v2";
    URI uri = new URI(baseUrl);

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);

    LOGGER.info("Start ..");

    String result = restTemplate.postForObject(uri, request, String.class);

    LOGGER.info("Result :" + result);
    LOGGER.info("End ..");

    return result;

}

//Move to Common
private List<HttpMessageConverter<?>> getMessageConverters() {
    List<HttpMessageConverter<?>> converters = 
      new ArrayList<HttpMessageConverter<?>>();
    converters.add(new MappingJackson2HttpMessageConverter());
    return converters;
}

}

restClientException:在org.springframework.web.client.restTemplate$HttpEntityRequestCallback.dowithRequest(restTemplate.java:964)~[spring-web-5.2.2.release.jar:5.2.2.release]在org.springframework.web.client.restTemplate.doExecute(restTemplate.jave:740)~[spring-web-5.2.2.release.jar:5.2.2.release]在JAR:5.2.2.Release]在org.springframework.web.client.restTemplate.PostForObject(restTemplate.java:443)~[spring-web-5.2.2.release.jar:5.2.2.Release]

如果我需要提供更多的东西,请告诉我。

共有1个答案

齐甫
2023-03-14

RestTemplate对您的对象SampleRequest及其序列化一无所知。我认为使用ObjectMapper最简单的方法是:

...
var headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
var entity = new HttpEntity<>(mapper.writeValueAsString(request), headers);
var result = restTemplate.postForObject(uri, entity, String.class);
...

您可以Autowire ObjectMapper映射器或创建新的映射器。

 类似资料:
  • 问题内容: 通过网络嵌套更新,打印“ abc已更新”,但实际值在Redis数据库中不更新。 注意:-上面的代码在localhost上有效,但更新未在heroku-redistogo上显示。 编辑:-我在本地主机上运行代码,redis连接到Redistogo。使用以下代码:- 设置快速会议:- 我还使用以下代码创建了另一个redisClient: 问题答案: 在Heroku上运行此代码时,您是否在控

  • 我正在尝试从PDF文件中抓取一些数据。我正在使用class.pdf2text.php(在这里找到)(通过一些内部调整),所有工作都很好,但是我有这种非常奇怪的情况。如果我像这样运行代码: 未返回任何内容< code>$bill_date为空。如果我像这样运行代码: 然后打印的所有内容, 是一个包含preg_match结果的数组。正如你可以想象的那样,我无意输出整个内容,我只需要得到preg_mat

  • 问题内容: 我正在尝试让Eclipse v3.5(Galileo)在我的计算机上重新运行-以前我没有任何问题地运行过它,但是现在我仍然遇到此错误: Java运行时环境(JRE)或Java开发工具包(JDK)必须可用才能运行Eclipse。搜索以下位置后未找到Java虚拟机:当前路径中的C:\ eclipse \ jre \ javaw.exe 我刚刚完成了JDK和SDK的全新安装。 我有Windo

  • 我需要在SE环境中使用没有CDI容器的Jersey 2.28(带Jetty)。我的所有设置都在web.xml中: 以下是我使用的依赖项: 我得到的是: 我知道Jersey可以与不同的DI容器一起使用,例如Weld、HK2等,但是否可以不使用DI容器?如果是,那又是怎样做的呢?

  • 我在库伯内特斯连夜运行了一项工作。当我早上检查它时,它已经失败了。通常,我会检查pod日志或事件来确定原因。然而,pod被删除了,没有事件。 下面是输出: 这是作业配置yaml。它有,但是它从来没有重启过。我也没有设置TTL,所以豆荚永远不会被清理。 我如何调试这个?

  • 问题内容: 请给我建议,如何正确设置Jetty。我正在使用最新版本的码头(9.0.6.v20130930)。我命令服务器实现具体的servlet,它不起作用!我已经在Jetty工作了一点,却没有看到类似的东西。 -主类 -Frontend.class -Сonsole 问题答案: 您缺少三件事。 一个上下文 一个会话ID经理 一个会话处理程序(与相关的会话管理器) Main.java MyDump