【问题标题】:send custom RequestBody from POST request to an external GET request in java将自定义 RequestBody 从 POST 请求发送到 java 中的外部 GET 请求
【发布时间】:2019-08-05 16:04:19
【问题描述】:

我正在使用多线程发布请求设置休息服务(在微服务场景中),我需要区分 RequestBody 交付,例如:

{obj0, obj1, obj2, obj3}

前三个 obj 是 kafka 队列上的正确转发器,但现在我想添加新的 obj (obj3) 并将他的交付分开以将其发送到另一个外部休息服务。 这个外部 GET 服务将接收 obj3(只是 2 个字符串)来评估他的 PathVariable 并触发一些其他算法。 我怎样才能达到这个结果? 在我的 doExecute() 方法中,我有一些这样的代码:

for (String element : bodyElements) {
  String[] singleElement = element.split(",");

        if (obj1 || obj2 || obj3){
          ...do something;
          }else{
           ...forward obj3 to other REST service
          }

感谢任何帮助,谢谢!

【问题讨论】:

  • 您可以使用 RestTemplate 对象与外部 Web 服务联系
  • 你能解释清楚吗?

标签: java spring post get


【解决方案1】:

我希望这能回答你的问题

HttpEntity body = new HttpEntity(postBody,headers);
new RestTemplate().exchange("http://service-url",HttpMethod.POST,body,String.class);

这只是一个rest模板的例子。如果你想做 GET 调用,只需将 HttpMethod.POST 替换为 HttpMethod.GET 并将正文传递为 null

【讨论】:

  • 现在试过但没用。我需要传递一个自定义正文,所以我设置了它但我得到:org.springframework.web.HttpMediaTypeNotAcceptableException:找不到可接受的表示
  • 将标头中的 Content-Type 标头添加到服务正在接收的值中,例如“application/json”
  • HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity body = new HttpEntity(payload, headers); ...但有同样的错误
  • 是在测试字符串中模拟的单个 JSON,例如:"{\n" + " \"attribute1\": \"value\",\n" + " \"attribute2\": \ "值\",\n" + "}";
  • 您是否尝试过根据您想要的响应类型添加接受标头
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
相关资源
最近更新 更多