赞
踩
Android开发之Https网络请求实践
最近使用VisualStudio开发APP,涉及的网络请求数据源来自于Https网络,在此进行记录,初研阶段,大神轻喷,谢谢。
网络请求组件我们使用okhttp组件,在Module层的build.gradle中引入
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.7'
并点击gradle上方的Sync进行同步
代码如下(示例):
import android.annotation.SuppressLint; import java.security.cert.X509Certificate; import javax.net.ssl.X509TrustManager; public class MyTrustManager implements X509TrustManager { @SuppressLint("TrustAllX509TrustManager") @Override public void checkClientTrusted(X509Certificate[] chain, String authType) { // TODO Auto-generated method stub } @SuppressLint("TrustAllX509TrustManager") @Override public void checkServerTrusted(X509Certificate[] chain, String authType) { // TODO Auto-generated method stub } @Override public X509Certificate[] getAcceptedIssuers() { // TODO Auto-generated method stub return null; } }
private static final OkHttpClient mOkHttpClient;
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
private static SSLSocketFactory createSSLSocketFactory() { SSLSocketFactory ssfFactory = null; try { SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, new TrustManager[]{ new MyTrustManager()}, new SecureRandom()); ssfFactory = sc.getSocketFactory(); } catch (Exception e) { e.printStackTrace(); } return ssfFactory; }
public static X509TrustManager getX509TrustManager() { X509TrustManager trustManager = null; try { TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init((KeyStore) null); TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) { throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers)); } trustManager = (X509TrustManager) trustManagers[0]; } catch (Exception e) { e.printStackTrace(); } return trustManager; }
static { OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.protocols(Collections.singletonList(Protocol.HTTP_1_1)); builder.connectTimeout(30, TimeUnit.SECONDS); /* * Modify by liuwz * builder.sslSocketFactory(createSSLSocketFactory()); * */ builder.sslSocketFactory(createSSLSocketFactory(),getX509TrustManager()); builder.hostnameVerifier((hostname, session) -> true); mOkHttpClient = builder.build(); }
public static Response execute(Request r
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。