Android 2.3网络访问时,使用Authorization字段对接口加验证的问题
2014-10-09 13:46
357 查看
遇到一个特别坑的问题,记录下来,以免以后再被坑。
在项目里写了一个通用的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的属性。
需要处理掉这个换行才可以,不然请求头部会被提前结束掉。造成无效的访问。
Good Good Study,Day Day Fuck !!!
在项目里写了一个通用的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 !!!
相关文章推荐
- Android中使用cmwap接入点访问互联网的问题及解决办法
- 待解决问题:验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate
- 关于android通过servlet访问MySql数据库的问题(附带简单的JSON使用)
- 解决Word 2007启动时弹出“无法访问您试图使用功能所在的网络位置”的问题...
- Android 程序访问WEB服务 HTTP 接口使用
- Android中使用cmwap接入点访问互联网的问题及解决办法
- Struts2.1.8 验证框架(validation)的使用中遇到的一些问题(直接访问jsp遇到的错误)--Allen
- (转载)解决Android下Wap模式无法访问网络的问题
- Android手机浏览器访问本地网络相关问题
- Android学习指南之三十:使用URLConnection和HttpClient访问网络的方法
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL 网络接口, error: 26 - 定
- android 2.3 数据流量开关 移动网络的数据访问功能,非APN开关
- [Android]正确地访问网络资源----Proxy的使用
- 在android使用mina实现网络访问
- sql查询时,出现 "在纤程模式下不支持异类查询和 OLEDB 访问接口的使用"问题
- Struts2.1.8 验证框架(validation)的使用中遇到的一些问题(直接访问jsp遇到的错误)
- 局域网共享问题,提示:无法访问.你可能没有权限使用网络资源
- 两个同子域,一个子域访问另一个子域下接口,解决form验证的问题
- Android中使用cmwap接入点访问互联网的问题及解决办法
- Android 程序访问WEB服务 HTTP 接口使用