使用spring / tomcat从http请求得到错误的响应

时间:2017-08-04 22:14:51

标签: java spring http tomcat request

我遇到的情况是我从简单的http请求中收到错误的答案。

在远程tomcat服务器A上我有:

@RequestMapping(value = "/test/dosomething", method = RequestMethod.GET)
public String doSomething() {
    RestTemplate rt = new RestTemplate();
    ResponseEntity<String> rpe = 
    rt.getForEntity("http://foo.dns/test/getstring", String.class);
    return "redirect:" + rpe.getBody();
}

此方法调用远程tomcat服务器B上的/ test / getstring。

@RequestMapping(value = "/test/getstring", method = RequestMethod.GET)
@ResponseBody
public String getString() {
    return "http:///test.dns";
}

运行此命令时,远程服务器A上的rpe.getBody()结果为&#39; {} http://test.d&#39;。这种做法是错误的,不起作用。

这是代码:

  • 在远程websphere服务器A和B上运行时,结果正确(http://test.dns
  • 使用intellij / tomcat在本地运行A和B时,结果正确
  • 运行本地和B遥控器时,结果正确
  • 运行A遥控器并且B local具有正确的结果时
  • 从远程A执行卷曲到远程B的结果是正确的

任何可能导致此行为的想法?

我也尝试使用apache httpClient重写resttemplate部分,但结果相同。

服务器A具有tomcat 7.0.69和java 8 服务器B有tomcat 7.0.69和java 7 本地和远程

2 个答案:

答案 0 :(得分:0)

您在服务器b上使用@ResponseBody,因此它将响应作为json返回

答案 1 :(得分:0)

我最终找到了这种行为的原因。我们使用的框架会将数据写入后台响应中。我们不知道这种行为,而是像往常一样对待控制器方法(使用responsebodyband返回类型)。该框架不需要控制器方法即可返回。因此,将2个响应写入响应。 结论:我讨厌以非透明的方式自行运行的框架。 (该框架是公司以某种方式获得的内部开发框架)