起因:在一次修改https过程中,QQ健康要同步的网络请求代码太旧了,报错,于是我就负责把它的网络请求改了,改成我们统一的网络请求 StringZIPRequest
后来由于什么原因没测试,最后最后发现问题了.......
看了一中午没调试出什么问题,因为包括参数名称,参数类型都是完全一样的,为什么ios请求成功,我的就不行呢??
我就改了一个网络请求方式啊,其它也没变啊,为什么就是不行呢。
大米跟我说,是因为编码的问题,Content-Type
的值设置为 Content-Type application/x-www-form-urlencoded
把这个设置上就好了。
但是我们统一的这个请求不太好改,要改都改了,所以索性 一不做二不休,改了,重新换一种请求网络 HttpUrlConnection
,又重新试了一次,好了。部分代码如下:
try {
urlConn.setRequestMethod("POST");
urlConn.setUseCaches(false);
// 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
urlConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
// 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
// 要注意的是connection.getOutputStream会隐含的进行connect。
urlConn.connect();
//DataOutputStream流
DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());
//要上传的参数
String content = "oauth_consumer_key=" + URLEncoder.encode(qqInfoBean.getOauth_consumer_key(), "UTF_8")+
"&access_token="+URLEncoder.encode(qqInfoBean.getAccess_token(), "UTF_8")+
;
//将要上传的内容写入流中
out.writeBytes(content);
//刷新、关闭
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
最后问题解决,写个笔记做个记录,记录自己在Android路上遇到的各种奇葩坑。
奉上参考文章地址:http://blog.csdn.net/nrs12345/article/details/18358865