实习上班领导让我实现一个接口,传输json格式的数据到另外一个系统然后返回结果。接口实现倒是很顺利,结果最后post却遇到了一个坑。
例如:我要post json格式数据到http://username:[email protected]地址:端口号/xxxxxxxxx
问题情况:
使用postman把我要传输的json数据填入,返回成功。(原以为能提早完成任务)
然后将项目部署到服务器却报错,上实际运行返回:
1. Need username or password
2. 响应码:401 msg:Unauthorized
解决方法:
不能直接在url中使用username:[email protected],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)。
如何访问带有验证(Authorization)的url,并且返回数据