Android AsyncHttpClient https使用教程
阿新 • • 發佈:2019-02-01
今年夏天在WWDC2016開發者大會上,蘋果宣佈,必須在2017年1月1日之前實現所有的能夠App安全地接入伺服器,即“所有iOS應用將必須支援ATS(App Transport Security)安全標準”,從而提升應用和系統安全性。所以以後開發者應用應切換至HTTPS服務。
雖然Android沒這麼要求,但一個公司介面不可能出兩套,一套支援ios https 一套支援Android http,故今日寫此文,希望Android的同胞少走彎路。
https協議和http有著很大的區別。簡單的來講,http效率更高,https安全性更高。
下面舉例基於async-http-client怎樣訪問htpps:
1、首先獲得證書,由後臺提供,如果後臺提供的證書是.crt和.key檔案,需要讓後臺轉換為.p12檔案,也可以自己轉換,不過要配置環境下載工具,閒的麻煩就直接讓後臺提供了。
2、匯入async-http-client jar包
3、配置證書,獲取MySSLSocketFactory物件
private static MySSLSocketFactory getSocketFactory(Context context) { // TODO Auto-generated method stub MySSLSocketFactory sslFactory = null; try { KeyStore keyStore = KeyStore.getInstance("PKCS12"); InputStream instream = context.getResources().openRawResource( R.raw.server);//後臺拿到的.p12證書 keyStore.load(instream, "後臺拿到的.p12證書密碼".toCharArray()); sslFactory = new MySSLSocketFactory(keyStore); } catch (KeyStoreException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (NoSuchAlgorithmException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (CertificateException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (UnrecoverableKeyException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (KeyManagementException e) { // TODO Auto-generated catch block e.printStackTrace(); } return sslFactory; }
4、async-http-client新增證書請求
private static AsyncHttpClient client = new AsyncHttpClient();
client.setSSLSocketFactory(getSocketFactory(context));
至此大功告成,希望對大夥有用,不懂的可以問我