android 2.3系统上HttpClient SSL请求 Error
2013-08-26 17:27
134 查看
先做搬运工:
解决办法:
http://stackoverflow.com/questions/2642777/trusting-all-certificates-using-httpclient-over-https
有人改使用HttpUrlConnection:
http://stackoverflow.com/questions/9574870/no-peer-certificate-error-in-android-2-3-but-not-in-4
但是你可以看到这会在2.2系统上导致另外一个问题:
http://stackoverflow.com/a/5895320/912936
制作SSL签名证书:
http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html
在做新浪微博认证时候遇到的问题,在这里吐槽下新浪微博。上个周五测试,测试人员发现原来的可以用代码崩了,debug发现原来用户授权后直接返回token ,uid...的Bundle只返回code一个键值对了。但是在下午解决该bug的时候,他又返回token,uid等等四个键值对。今天早上来发现,又只返回一个code了!!!不知道过一会还会不会改,最重要的是:竟然没有给开发人员任何通知!!!!!!
新浪微博通过code获取token部分代码:
希望有用于正遇到这个问题的人。
解决办法:
http://stackoverflow.com/questions/2642777/trusting-all-certificates-using-httpclient-over-https
有人改使用HttpUrlConnection:
http://stackoverflow.com/questions/9574870/no-peer-certificate-error-in-android-2-3-but-not-in-4
但是你可以看到这会在2.2系统上导致另外一个问题:
http://stackoverflow.com/a/5895320/912936
制作SSL签名证书:
http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html
在做新浪微博认证时候遇到的问题,在这里吐槽下新浪微博。上个周五测试,测试人员发现原来的可以用代码崩了,debug发现原来用户授权后直接返回token ,uid...的Bundle只返回code一个键值对了。但是在下午解决该bug的时候,他又返回token,uid等等四个键值对。今天早上来发现,又只返回一个code了!!!不知道过一会还会不会改,最重要的是:竟然没有给开发人员任何通知!!!!!!
新浪微博通过code获取token部分代码:
String url = "https://api.weibo.com/oauth2/access_token?"; //获取了code,但是访问https://api.weibo.com/oauth2/access_token? // client_id=id // &client_secret=secret // &grant_type=authorization_code // &redirect_uri=http://www.xx.xx // &code=7efexxxxxxxxxxx(code是WeiboAuthListener 中的omComplete中获取到code,如下面:) /***** WeiboAuthListener 中的omComplete中获取到code @Override public void onComplete(Bundle values) { String code = values.getString("code"); *****// HttpClient httpClient = new DefaultHttpClient(clientConnManager, params);//两个参数上面的链接中已经有明确定义,可以视自己需要而定clientConnManager。 //通过code获取token List<NameValuePair> valuePairList = AppUtil.httpVerifyParams(); valuePairList.add(new BasicNameValuePair("client_id", Config.SINA_APP_ID)); valuePairList.add(new BasicNameValuePair("client_secret", Config.SINA_APP_SECRET)); valuePairList.add(new BasicNameValuePair("grant_type", "authorization_code")); valuePairList.add(new BasicNameValuePair("redirect_uri", Config.SINA_REDIRECT_URL)); valuePairList.add(new BasicNameValuePair("code", code)); //听说必须用post请求,具体我也没找到官方的文档。 HttpPost httpUriRequest = new HttpPost(url); HttpPost httpPost = (HttpPost) httpUriRequest; httpPost.setEntity(new UrlEncodedFormEntity(valuePairList, HTTP.UTF_8)); //获取返回结果 private String connectionNet(HttpUriRequest httpUriRequest) throws IOException { try { HttpResponse response = httpClient.execute(httpUriRequest); if (response.getStatusLine().getStatusCode() == 200) { Logger.i("request service success,process the result to string ..."); //网络请求成功: String str = EntityUtils.toString(response.getEntity()); return str; } return null; } catch (IOException e) { e.printStackTrace(); Logger.e("#ConnectionNetWorkAsyncTask# is error when connection the network"); } finally { httpUriRequest.abort(); httpClient.getConnectionManager().shutdown(); //如果是多次调用该方法从网络获取数据,请不要在这里调用shutdown方法。 } return null; } /*******************华丽丽的灰阁线*****************************/ 3.0以上系统可以直接下面这样: SchemeRegistry supportedSchemes = new SchemeRegistry(); supportedSchemes.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); supportedSchemes.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); /************************************************************/ //Android新人们,一定不要在主线程中访问网络,切记切记
希望有用于正遇到这个问题的人。
相关文章推荐
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android 网络请求方式之HttpClient,GET,POST,PUT请求使用方法
- Android如何构建一个https请求的httpClient
- Android_HttpClient_get请求post表单提交上传
- Android Asynchronous Http Client-Android异步网络请求客户端接口 .
- 【Android】Android2.3版本以上谷歌为何推荐使用HttpURLConnection却弃用 Apache HttpClient
- 【实战】(二)android模拟qq登录(apache的httpClient发送get和post请求)
- httpclient对象请求:如果报这个错:javax.net.ssl.SSLException: hostname in certificate didn't match证书不匹配的主机名
- android系统内置HttpClient库(WebView+ Http(s)URLConnection(ok-http)+ HttpClient(apache-http))
- Android之Http通信——4.Android HTTP请求方式:HttpClient
- android通过httpClient请求获取JSON数据并且解析
- AndroidHttpClient & jsoup 解析 正方教务系统
- Android Asynchronous Http Client-Android异步网络请求客户端接口(转)
- Android 通过httpclient请求web服务器,并解决用户登录session保持
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android下通过httpClient发送GET和POST请求
- Android HTTP请求方式:HttpClient
- Android网络数据请求之HttpClient
- android获取URLConnection和HttpClient网络请求响应码
- android通过httpClient请求获取JSON数据并且解析