使用 Smack 4.1 连接到 Gtalk
Posted
技术标签:
【中文标题】使用 Smack 4.1 连接到 Gtalk【英文标题】:Connect to Gtalk using Smack 4.1 【发布时间】:2015-04-07 08:46:05 【问题描述】:我正在尝试使用 Smack 4.1 从我的 android 应用程序连接到 Gtalk,但每次我尝试连接时,它都会显示错误:javax.net.ssl.SSLHandshakeException: Handshake failed
下面是我的代码:
private class ConnectionThread extends AsyncTask<Void, Void, Boolean>
@Override
protected Boolean doInBackground(Void... params)
boolean isConnected = false;
XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration
.builder();
config.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
config.setUsernameAndPassword(username,password);
config.setServiceName(service);
config.setHost(host);
config.setPort(port);
config.setDebuggerEnabled(true);
//config.setCompressionEnabled(false);
config.setSocketFactory(SSLSocketFactory.getDefault());
connection = new XMPPTCPConnection(config.build());
XMPPConnectionListener connectionListener = new XMPPConnectionListener();
connection.addConnectionListener(connectionListener);
try
connection.connect();
isConnected = true;
catch (Exception e)
Log.e(TAG,"Unable to connect to server = " + e.toString());
return isConnected;
其中主机、用户名、密码服务和端口来自 String.xml 值:
<?xml version="1.0" encoding="utf-8"?>
<string name="app_name">XmppLab</string>
<string name="action_settings">Settings</string>
<string name="connect">Connect</string>
<string name="host">talk.google.com</string>
<string name="port">5222</string>
<string name="username">username@gmail.com</string>
<string name="password">password</string>
<string name="service">gmail.com</string>
请告知我在这里遗漏了什么吗?非常感谢您提供任何帮助。
【问题讨论】:
config.setSocketFactory(SSLSocketFactory.getDefault());
为什么?
嗨,Flow,感谢您的提示。我在下面分享我编辑的代码,希望它能帮助其他有同样问题的人。
@Flow 我在尝试初始化XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration .builder();
时得到ExceptionInInitializeError
这种行为是否已知??
【参考方案1】:
感谢您的提示。我将代码更改如下,现在它可以连接到 Gtalk:
config.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
config.setUsernameAndPassword(username,password);
config.setServiceName(service);
config.setHost(host);
config.setPort(port);
config.setDebuggerEnabled(true);
//config.setCompressionEnabled(false);
//config.setSocketFactory(SSLSocketFactory.getDefault());
【讨论】:
以上是关于使用 Smack 4.1 连接到 Gtalk的主要内容,如果未能解决你的问题,请参考以下文章
Smack 连接到 Google 的 XMPP 服务 (gtalk) 会引发异常“SASLError using PLAIN: not-authorized”
无法使用 Smack 4.1 从 Android 连接 apache vysper XMPP 服务器