Android 2.3网络访问时,使用Authorization字段对接口加验证的问题

遇到一个特别坑的问题,记录下来,以免以后再被坑。

在项目里写了一个通用的HTTP协议的POST方法,然后在4.0以上的系统上使用一点问题都没有,结果换到2.3系统就出毛病了。

在进行网络请求时,参数编码各种设置都正确,依然一直会返回400错误 Your browser sent a request that this server could not understand.

最后实在是无奈,抓包看具体的数据提交内容,才找到真正的原因,T_T。


Http协议在处理请求头部信息的时候,请求头部的连续两个换行(\r\n\r\n)会被当做头部的结束标志来处理。

所以请求头部如果不到结尾地方,不能有(\r\n\r\n)隔行的换行出现。

而正好公司做的API接口,都加的有权限验证,需要设置请求头部Authorization的属性。

byte[] token = (ConstantValues.username + ":" + ConstantValues.password).getBytes("utf-8");
String authorization = "Basic "+ new String(Base64.encode(token, Base64.DEFAULT),"utf-8");
然后问题就来了,好像在2.3的系统上Base64.encode()这个方法,在对内容进行Base64编码之后,会在返回的结尾加上一个换行。

需要处理掉这个换行才可以,不然请求头部会被提前结束掉。造成无效的访问。

httpPost.setRequestProperty("Authorization", authorization.trim());
调用String的trim()方法就行了。


Good Good Study,Day Day Fuck !!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值