Android EventSource 信任服务器

最近在ios和android SDK中写EventSource进行事件监听,实现动态显示列表功能,如果你做一个聊天室,聊天室里面的人员列表会随着人员的入会和退会进行不断的更新,这就需要EventSource了,就是对服务器端的事件进行监听,如果有人员入会,会收到入会事件,如果人员退出会收到删除事件,如果人员被静音等,会收到删除事件。

android使用的开源库为:
Android EventSource

引入这个EventSource库时,由于是发送的走的是SSL加密,所以客户端要和服务器端进行网络交互,首先信任服务器,所以如何信任服务器?

Android EventSource 信任服务器_第1张图片
Paste_Image.png

在引入的EventSource中,有一个EventSource类,查看上图代码

Android EventSource 信任服务器_第2张图片
Paste_Image.png

如上:在建立连接之前,传入即可,以下是信任主机服务器代码,加入即可服务器建立连接,及时不引入信任证书

SSLFactory.GetNewSSLEngine()

所以需要修改SSLFactory中的GetNewSSLEngine()中的内容。

import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class SSLEngineFactory {  
  SSLEngine GetNewSSLEngine() {    
    SSLEngine sslEngine = null;    
    SSLContext sslContext;      
  try {         
       TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {     
           public java.security.cert.X509Certificate[] getAcceptedIssuers() {  
                  return null;          
      }           
     public void checkClientTrusted(X509Certificate[] certs, String authType) { 
               }   
             public void checkServerTrusted(X509Certificate[] certs, String authType) {       
         }      
      }      
      };      
     sslContext = SSLContext.getInstance("SSL");        
    sslContext.init(null, trustAllCerts, new java.security.SecureRandom());    
        HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());   
         // Create all-trusting host name verifier       
     HostnameVerifier allHostsValid = new HostnameVerifier() {       
         public boolean verify(String hostname, SSLSession session) {  
                  return true;         
       }         
   };         
   // Install the all-trusting host verifier  
          HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);     
       sslEngine = sslContext.createSSLEngine();   
        sslEngine.setUseClientMode(true);   
         sslEngine.setNeedClientAuth(false);   
     } catch (NoSuchAlgorithmException e) {       
     e.printStackTrace();    
       // Log.d(TAG,e.getMessage());  
      } catch (KeyManagementException e) {   
         e.printStackTrace();      
     // Log.d(TAG,e.getMessage());     
   }      
  return sslEngine;    
}
}

你可能感兴趣的:(Android EventSource 信任服务器)