spring boot,使用AsyncRestTemplate进行异步Http调用,总是返回302
两个web应用,WebAppA和WebAppB,WebAppA通过AsyncRestTemplate来异步调用WebAppB,调用过程中,用一个类A来互相传递数据,以Json的形式,类A如下:
public class A
{
private String str;
public A()
{
}
public String getStr()
{
return str;
}
public void setStr(String str)
{
this.str = str;
}
}
整个过程,就相当于是,WebAppA发过去一个
{
"str": "123"
}
然后WebAppB把里面的str给改了,在传回给WebAppA
{
"str": "123POST success"
}
WebAppB作为被调用者的代码是:
@RequestMapping(value = "/", method = RequestMethod.POST)
public A test_POST(@RequestBody A a)
{
a.setStr(a.getStr() + "POST success");
System.out.println("POST success WebAppB-0.0.1-SNAPSHOT.war!");
return a;
}
WebAppB我用PostMan测试过了,可以得到正确的返回的。
然后调用者WebAppA的调用代码是:
//POST
a = new A();
a.setStr("123");
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Content-Type", "application/json;charset=UTF-8");
HttpEntity<Object> httpEntity = new HttpEntity<>(headers);
AsyncRestTemplate template = new AsyncRestTemplate();
String url = "http://127.0.0.1:12001/"
//调用完后立即返回(没有阻塞)
ListenableFuture<ResponseEntity<A>> forEntity = template.postForEntity(url, httpEntity, A.class, a);
//异步调用后的回调函数
forEntity.addCallback(new ListenableFutureCallback<ResponseEntity<A>>()
{
//调用成功
@Override
public void onSuccess(ResponseEntity<A> resp)
{
a = resp.getBody();
}
//调用失败
@Override
public void onFailure(Throwable t)
{
System.out.println(t.getMessage());
}
});
结果,总是会返回302.
如图:
(无视url中的路径,路径肯定没有问题,我在tomcat里面配了一个根目录,上面贴的代码体现不到,为了各位看着方便,我就把截图中的给删了,路径测过的,肯定没有问题)
麻烦各位帮我看一下,大概是什么问题导致的,多谢了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
展开Headers中的Location头信息,看看path是什么,然后重新修改请求url测试。
HTTP 302 浏览器会自动跳转到Location的url,但是编程不一定会