實習上班領導讓我實現一個接口,傳輸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)。