鍍金池/ 問答/Java  Linux/ spring boot,使用AsyncRestTemplate進行異步Http調(diào)

spring boot,使用AsyncRestTemplate進行異步Http調(diào)用,總是返回302

兩個web應(yīng)用,WebAppA和WebAppB,WebAppA通過AsyncRestTemplate來異步調(diào)用WebAppB,調(diào)用過程中,用一個類A來互相傳遞數(shù)據(jù),以Json的形式,類A如下:

public class A
    {
        private String str;

        public A()
        {
        }

        public String getStr()
        {
            return str;
        }

        public void setStr(String str)
        {
            this.str = str;
        }
    }

整個過程,就相當(dāng)于是,WebAppA發(fā)過去一個

{
    "str": "123"
}

然后WebAppB把里面的str給改了,在傳回給WebAppA

{
    "str": "123POST success"
}

WebAppB作為被調(diào)用者的代碼是:

@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測試過了,可以得到正確的返回的。

然后調(diào)用者WebAppA的調(diào)用代碼是:

//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/"
        //調(diào)用完后立即返回(沒有阻塞)
        ListenableFuture<ResponseEntity<A>> forEntity = template.postForEntity(url, httpEntity, A.class, a);

        //異步調(diào)用后的回調(diào)函數(shù)
        forEntity.addCallback(new ListenableFutureCallback<ResponseEntity<A>>()
        {
            //調(diào)用成功
            @Override
            public void onSuccess(ResponseEntity<A> resp)
            {
                a = resp.getBody();
            }

            //調(diào)用失敗
            @Override
            public void onFailure(Throwable t)
            {
                System.out.println(t.getMessage());
            }
        });

結(jié)果,總是會返回302.
如圖:
圖片描述

(無視url中的路徑,路徑肯定沒有問題,我在tomcat里面配了一個根目錄,上面貼的代碼體現(xiàn)不到,為了各位看著方便,我就把截圖中的給刪了,路徑測過的,肯定沒有問題)

麻煩各位幫我看一下,大概是什么問題導(dǎo)致的,多謝了。

回答
編輯回答
來守候

展開Headers中的Location頭信息,看看path是什么,然后重新修改請求url測試。
HTTP 302 瀏覽器會自動跳轉(zhuǎn)到Location的url,但是編程不一定會

2017年12月6日 11:57