Android AsyncHttpClient https使用教程

今年夏天在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));

至此大功告成,希望對大夥有用,不懂的可以問我





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章