spring boot,使用AsyncRestTemplate进行异步Http调用,总是返回302

发布于 2022-09-06 04:00:10 字数 2258 浏览 31 评论 0

两个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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

飘逸的'云 2022-09-13 04:00:10

展开Headers中的Location头信息,看看path是什么,然后重新修改请求url测试。
HTTP 302 浏览器会自动跳转到Location的url,但是编程不一定会

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文