resttemplate调用接口第一次成功,以后都失败

使用spring boot resttemplate调用一个三方接口,每次都是程序启动后只能调用成功一次,再次调用就会被三方接口返回302到登录页面。而用其它工具栏构建http请求却没有这个问题。一开始怀疑是host或是referer的问题,修改header中的host和referer,貌似没起作用,这时候百度后发现没有设置sun.net.http.allowRestrictedHeaders

 

System.setProperty("sun.net.http.allowRestrictedHeaders", "true");

 但是设置之后问题依旧.

这时候跟踪代码,发现三方返回的时候给了一个set-cookie,难道是这个问题导致的,于是在resttemplate的exchange之前,判断cookie是不是有内容,但是返回结果为空。
没办法只能用抓包工具看看第一次请求和后续请求的不同了,使用wireshark,抓包后,发现后续请求比第一次多了一个cookie,这个cookie是三方接口在第一次调用后返回的。这说明resttemplate在调用的时候还是发送了cookie,只是这个cookie是在底层最后发送请求的时候才添加
再百度关键词resttemplate 维持、保持会话,没有相关问题的解决方法,百度关键词httpclient 保持会话,倒是有,下面文章倒是提供了解决方向

httpclient妙用二 httpclient保持会话登录》

百度是在查不到了,在手机上用今日头条搜索关键词resttemplate 自动保持会话,居然在简书上有相关文章。
文章地址:https://www.jianshu.com/p/17885c1e1c79
还就是我要找的答案,按图索骥,之后问题解决,

HttpClientBuilder.create().disableCookieManagement()
posted @ 2020-11-28 10:29  八方鱼  阅读(1508)  评论(0编辑  收藏  举报