首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android Https通讯

2012-07-22 
Android Https通信https与http的通信,在我看来主要的区别在于https多了一个安全验证机制,而Android采用的

Android Https通信

https与http的通信,在我看来主要的区别在于https多了一个安全验证机制,而Android采用的是X509验证,首先我们需要这重写X509类,建立我们的验证规则、、不过对于特定的项目,我们一般都是无条件信任服务端的,因此我们可以对任何证书都无条件信任(其实本质上我们只是信任了特定url的证书,为了偷懒,才那么选择的)/**

?好了,我们写好了信任规则,接下载就要创建一个主机的信任列表

?上面的都是https通信需要做的几个基本要求,接下载我们要做的就是https的使用啦下面就以get和post为例进行说明,中间还涉及到cookie的使用

String result = "";Log.i("控制", httpUrl);Query obj = new Query();HttpURLConnection http = null;URL url;try {url = new URL(httpUrl);// 判断是http请求还是https请求if (url.getProtocol().toLowerCase().equals("https")) {trustAllHosts();http = (HttpsURLConnection) url.openConnection();((HttpsURLConnection) http).setHostnameVerifier(DO_NOT_VERIFY);// 不进行主机名确认} else {http = (HttpURLConnection) url.openConnection();}http.setConnectTimeout(10000);// 设置超时时间http.setReadTimeout(50000);http.setRequestMethod("POST");// 设置请求类型为posthttp.setDoInput(true);http.setDoOutput(true);http.setRequestProperty("Content-Type", "text/xml");http.setRequestProperty("Cookie", DataDefine.mCookieStore);DataOutputStream out = new DataOutputStream(http.getOutputStream());out.writeBytes(base64);out.flush();out.close();obj.setHttpStatus(http.getResponseCode());// 设置http返回状态200还是403BufferedReader in = null;if (obj.getHttpStatus() == 200) {getCookie(http);in = new BufferedReader(new InputStreamReader(http.getInputStream()));} elsein = new BufferedReader(new InputStreamReader(http.getErrorStream()));result = in.readLine();// 得到返回结果in.close();http.disconnect();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
?这里面的base64是我经过base64加密过以后的数据

热点排行