SocketClient使用https请求连接
来源:互联网 发布:淘宝助理发货地 编辑:程序博客网 时间:2024/06/07 06:11
private SocketClient mSocketClient;
private ExecutorService mSocketExecutor;
public void startSocket() { //Executors.newSingleThreadExecutor()返回一个线程池(这个线程池只有一个线程) // ,这个线程池可以在线程死后(或发生异常时)重新启动一个线程来替代原来的线程继续执行下去! mSocketExecutor = Executors.newSingleThreadExecutor(); mSocketExecutor.execute(mSocketTask);}
//接收socket通信
private Runnable mSocketTask = new Runnable() { @Override public void run() {getSocketClient().setCallback(new Callback() { @Override public void onConnected() { } @Override public void onConnectError(String msg) { } @Override public void onKicked() { } @Override public void onReceived(int type, String jsonStr, byte[] bin) { } @Override public void onSendOverTime(int type, String id, String json) { }});}};
//创建mSocketClient
private SocketClient getSocketClient() throws Exception { if (isTLS) { LogUtils.e(TAG, "连接TLS网络", null); //取得SSL的SSLContext实力+ SSLContext sslContext = SSLContext.getInstance("TLS"); //取得KeyManagerFactory和TrustManagerFactory的X509秘钥管理器实例 KeyStore tks = KeyStore.getInstance("BKS"); tks.load(getResources().openRawResource(R.raw.client),//证书 "123456".toCharArray()); EasyX509TrushManager trushManager = new EasyX509TrushManager(tks); sslContext.init(null, new TrustManager[]{trushManager}, null); SocketFactory factory = sslContext.getSocketFactory(); return mSocketClient = SocketClient.getDefault(ClientConfig.getDefault("app.xxxx.cn", 9100, factory)); } else { LogUtils.e(TAG, "连接普通网络", null); return mSocketClient = SocketClient.getDefault(ClientConfig.getDefault("xxx.xx.xxx.xx", 9002)); }}
public class EasyX509TrushManager implements X509TrustManager { private X509TrustManager standardTrustManager = null; /** * Constructor for EasyX509TrustManager. */ public EasyX509TrushManager(KeyStore keystore) throws NoSuchAlgorithmException, KeyStoreException { super(); TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); factory.init(keystore); TrustManager[] trustmanagers = factory.getTrustManagers(); if (trustmanagers.length == 0) { throw new NoSuchAlgorithmException("no trust manager found"); } this.standardTrustManager = (X509TrustManager) trustmanagers[0]; } /** * @see X509TrustManager#checkClientTrusted(X509Certificate[],String authType) */ public void checkClientTrusted(X509Certificate[] certificates, String authType) throws CertificateException { standardTrustManager.checkClientTrusted(certificates, authType); } /** * @see X509TrustManager#checkServerTrusted(X509Certificate[],String authType) */ public void checkServerTrusted(X509Certificate[] certificates, String authType) throws CertificateException { if ((certificates != null) && (certificates.length == 1)) { certificates[0].checkValidity(); } else { standardTrustManager.checkServerTrusted(certificates, authType); } } /** * @see X509TrustManager#getAcceptedIssuers() */ public X509Certificate[] getAcceptedIssuers() { return this.standardTrustManager.getAcceptedIssuers(); }}
阅读全文
0 0
- SocketClient使用https请求连接
- SocketClient
- socketClient
- httpclient4.x 使用连接池发送https请求使用总结
- Android环境下使用SocketClient
- httpclient4.x 使用连接池发送https请求
- java使用https请求
- 使用Retrofit Https请求
- 使用Https发送请求
- android 使用https请求
- (转) httpclient4.x 使用连接池发送https请求使用总结
- 使用cURL发起https请求
- 使用jwebunit测试https请求
- 使用curl发起https请求
- android Https请求的使用
- android https请求的使用
- file_get_contents无法请求https连接的解决方法
- file_get_contents无法请求https连接的解决方法
- iOS监控-野指针定位
- 257. Binary Tree Paths
- Dijkstra算法
- CentOS7 如何在root设置nologin之后切换到root账户
- 常用的Linux命令
- SocketClient使用https请求连接
- 代码规范
- 抠图技术及方法简介(Image Matting Overview)
- noip 2017 d1 t2题解
- sqlServer 和mysql数据同步问题
- CentOS下MySQL的彻底卸载
- laravel快捷调试数据库工具--Tinker
- webpack不是内部命令
- linux驱动子系统之输入子系统(2)