这段时间对接外部接口,需要做个跳转,按照对接方的阐述,调用接口后,跳转的url会放在返回的response header中Location中,状态码为307。在对接中,我却永远得到了是200的返回!
最初我是使用HttpClient去调用接口的,可是无论怎么调用都是200,返回的页面也与预期不符合,我以为是包的问题,我换成了java原生的HttpURLConnection去调用,依然是200。
然后我尝试用postman去调了一次接口,返回200
一样的参数,对接方也用postman掉了一次接口,返回307
我迷惑了
突然对方提醒了一句,你postman是不是没关闭自动重定向?
我以前没遇到过这状况啊,赶紧找谷歌百度老师一顿问
原来postman是会自动重定向的,对于我这个需求,需要在Settings中关闭自动重定向
再次请求,ok了
看着这个乌龙,我愣了一会,突然恍然大悟,那么HttpClient和HttpURLConnection是不是默认自动重定向的呢?
一顿操作,我依然用的是HttpClient,找到了设置是否自动重定向的配置
RequestConfig requestConfig = RequestConfig.custom()
.setRedirectsEnabled(false).build();
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpGet httpGet = new HttpGet(url);
httpGet.setConfig(requestConfig);
再次请求,正常返回307了!!!!
尴尬
通过这次尴尬经历,我只能说,我真正用到的知识体系沧海一粟啊