2016-08-25 5 views
0

Работает на чат-приложении на Android с использованием XMPP framework/OpenFire и просто передается на новый облачный сервер, но у меня возникают проблемы со старым подключением пользователей Android. Новые пользователи могут войти в систему и подключиться к OpenFire Server.Подключение к серверу OpenFire в Android-приложении через SSL?

Со старыми учетными записями пользователей он отключает соединение в первый раз, но затем второй раз он подключается. Кто-нибудь знает, в чем проблема?

Не могу понять, в чем проблема.

+0

«он не может подключиться в первый раз, но затем второй раз подключается» Можете ли вы предоставить исключение, которое вы получаете на стороне клиента, когда сбой 1-го раза не работает? –

ответ

0

Для подключения к Openfire (любой XMPP сервер) от андроида устройства с помощью SSL после этого с Смак

// Set key for SSL connection 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    config.setKeystoreType("AndroidCAStore"); 
    config.setKeystorekeyPath(null); 
} else { 
    config.setKeystoreType("BKS"); 
    String keyPath = System.getProperty("javax.net.ssl.trustStore"); 
    if (keyPath == null) 
     keyPath = System.getProperty("java.home") + File.separator + "etc" 
       + File.separator + "security" + File.separator + "certs.bks"; 
     config.setKeystorekeyPath(keyPath); 
    } 
} 

// Now set custom SSL to configuration 
try { 
    SSLContext ssl = SSLContext.getInstance("TLS"); 
    ssl.init(null, new TrustManager[]{new TLSUtils.AcceptAllTrustManager()}, null); 
    ssl.getServerSessionContext().setSessionTimeout(10 * 1000); 
    config.setCustomSSLContext(ssl); 
} catch (NoSuchAlgorithmException e) { 
    e.printStackTrace(); 
} catch (KeyManagementException e) { 
    e.printStackTrace(); 
} 

config.setSecurityMode(Connectionconfig.SecurityMode.required); 
// config is type of XMPPTCPConnectionConfiguration 
1

привет, если вы пытаетесь соединить XMPP с Openfire затем просто дать SSL разрешение на XMPPTCPConnectionConfiguration с привкусом библиотеки ,

private XMPPTCPConnectionConfiguration buildConfiguration() throws XmppStringprepException { 
    XMPPTCPConnectionConfiguration.Builder builder = 
      XMPPTCPConnectionConfiguration.builder(); 

    builder.setHost(Common.HOST); 
    builder.setPort(PORT); 
    builder.setCompressionEnabled(false); 
    builder.setDebuggerEnabled(true); 
    builder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
    builder.setSendPresence(true); 

    if (Build.VERSION.SDK_INT >= 14) { 
     builder.setKeystoreType("AndroidCAStore"); 
     builder.setKeystorePath(null); 
    } else { 
     builder.setKeystoreType("BKS"); 
     String str = System.getProperty("javax.net.ssl.trustStore"); 
     if (str == null) { 
      str = System.getProperty("java.home") + File.separator + "etc" + File.separator + "security" 
        + File.separator + "cacerts.bks"; 
     } 
     builder.setKeystorePath(str); 
    } 
    DomainBareJid serviceName = JidCreate.domainBareFrom(Common.HOST); 
    builder.setServiceName(serviceName); 


    return builder.build(); 
} 

и называем это при подключении с сервером здесь видим пример

XMPPTCPConnectionConfiguration config = buildConfiguration(); 
      SmackConfiguration.DEBUG = true; 
      this.connection = new XMPPTCPConnection(config); 
      this.connection.connect(); 

для получения более подробной информации посетите этот example

спасибо надеется, что это поможет вам решить вашу проблему (Y).