https接口,(android 互联网开发)2 访问https接口,进行数据交互(已在实际项目中使用)

前言:
在android开发中,会涉及到安全比较高的业务,比如银行,网上交易等,这就涉及到https协议的交互
对于https 交互过程分两个阶段
1. 客户端获取服务器的证书,并验证证书的内容是否可信
2. 客户端和服务器端进行握手协议,并进行数据传输
对于https 交互过程,第一点,采用了网站可信的方式,如有需要验证域名和证书是否一致的,请自我扩展
实现的过程:
1): 注册scheme of https
注意:
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER; 如果需要验证,则,自己继承HostnameVerifier ,并实现接口。
2):获取 httpClient 和 httpPost
3):获取数据
下面是实现的源码,参数就是https路径:
1 public String GetData(String URL) 2 { 3 String returns=""; 4 5 //Step _disibledevent=> 6 HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER; 7 8 SchemeRegistry registry = new SchemeRegistry(); 9 SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory(); 10 socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier); 11 registry.register(new Scheme("https", socketFactory, 443)); 12 registry.register(new Scheme("http",PlainSocketFactory.getSocketFactory (), 80)); 13 14 //Step Two Get httpClient and httpPost 15 16 DefaultHttpClient client = new DefaultHttpClient(); 17 SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry); 18 DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams()); 19 //------- Set verifier 20 HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier); 21 // -------Example send http request 22 // final String url = "http://martinreichart.com/_tmpdata/login_valid.json"; 23 HttpPost httpPost = new HttpPost(URL); 24 25 //Step Three Get Data 26 try { 27 HttpResponse response = httpClient.execute(httpPost); 28 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 29 // 解析返回的内容 30 returns = EntityUtils.toString(response.getEntity()); 31 } 32 } 33 catch(Exception ex) 34 { 35 36 String aa =ex.toString(); 37 } 38 39 return returns; 40 }
特别感谢:卓易点评网 发布Android 应用新去处赞助支持!!!
Tags:  https接口

延伸阅读

最新评论

发表评论