如何訪問帶有驗證(Authorization)的url,並且返回資料
阿新 • • 發佈:2020-07-15
實習上班領導讓我實現一個介面,傳輸json格式的資料到另外一個系統然後返回結果。介面實現倒是很順利,結果最後post卻遇到了一個坑。
例如:我要post json格式資料到http://username:password@ip地址:埠號/xxxxxxxxx
問題情況:
使用postman把我要傳輸的json資料填入,返回成功。(原以為能提早完成任務)
然後將專案部署到伺服器卻報錯,上實際執行返回:
1. Need username or password
2. 響應碼:401 msg:Unauthorized
解決方法:
不能直接在url中使用username:password@,postman會自動配置Authorization的資訊產生成功的假象,實則要在程式碼中單獨設定header傳送username和password的值
//username:password替換成正確的賬號密碼,並使用base64進行加密,將加密的位元組資訊轉化為string型別,encoding--->token String encoding = DatatypeConverter.printBase64Binary("username:password".getBytes("UTF-8"));
我用的是Hutool中的HttpUtil.post(),直接按照鏈式變成規範後面加上addHeader("Authorization", "Basic " +encoding)。