在最近中项目中,负责了一个图片下载的功能。开发后,在测试时 发现在2.x或3.x系统中能正常下载图片。但在4.x的系统上,一直报找不到下载地址的异常。这个问题很是奇怪,代码上没有任何错误的地址。
后来通过截取http 头信息发现,4.0上总是以post的方式去请求一个图片下载地址。但我明明setMethod 给参数是 get。经过用排除法,才发现是 setDoOutput(true) 这个方法导致 一直是post的请求。 可能大家编码习惯都在初始化connection 时把这个属性设置成true 。但在android 4.x系统中,底层的网络代码,只通过setDoOutput 是false 还是ture ,去判断是get还是post请求。所以以后大家在初始化conection 时,setDoOutput当需要post 才设置成true。否则,也会出现我遇到的这个问题,出现找不到地址的异常。
后来通过截取http 头信息发现,4.0上总是以post的方式去请求一个图片下载地址。但我明明setMethod 给参数是 get。经过用排除法,才发现是 setDoOutput(true) 这个方法导致 一直是post的请求。 可能大家编码习惯都在初始化connection 时把这个属性设置成true 。但在android 4.x系统中,底层的网络代码,只通过setDoOutput 是false 还是ture ,去判断是get还是post请求。所以以后大家在初始化conection 时,setDoOutput当需要post 才设置成true。否则,也会出现我遇到的这个问题,出现找不到地址的异常。