在使用Openfire作为服务器进行即时通讯(IM)开发的时候报出了一下异常:
XMPPError connecting to 127.0.0.1:5222.: remote-server-error(502) XMPPError connecting to 127.0.0.1:5222.
-- caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 5222): connect failed: ECONNREFUSED (Connection refused)
异常代码:
08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: XMPPError connecting to 127.0.0.1:5222.: remote-server-error(502) XMPPError connecting to 127.0.0.1:5222. 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: -- caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 5222): connect failed: ECONNREFUSED (Connection refused) 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration(XMPPConnection.java:566) 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:998) 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: at com.jxust.asus.xmpp.activity.LoginActivity$1$1.run(LoginActivity.java:78) 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: at java.lang.Thread.run(Thread.java:818) 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: Nested Exception: 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: java.net.ConnectException: failed to connect to /127.0.0.1 (port 5222): connect failed: ECONNREFUSED (Connection refused) 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:124) 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183) 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:456) 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: at java.net.Socket.connect(Socket.java:882) 08-04 11:55:50.786 15149-15709/com.jxust.asus.xmpp W/System.err: at java.net.Socket.connect(Socket.java:825) 08-04 11:55:50.787 15149-15709/com.jxust.asus.xmpp W/System.err: at org.jivesoftware.smack.proxy.DirectSocketFactory.createSocket(DirectSocketFactory.java:50) 08-04 11:55:50.787 15149-15709/com.jxust.asus.xmpp W/System.err: at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration(XMPPConnection.java:554) 08-04 11:55:50.787 15149-15709/com.jxust.asus.xmpp W/System.err: at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:998) 08-04 11:55:50.787 15149-15709/com.jxust.asus.xmpp W/System.err: at com.jxust.asus.xmpp.activity.LoginActivity$1$1.run(LoginActivity.java:78) 08-04 11:55:50.787 15149-15709/com.jxust.asus.xmpp W/System.err: at java.lang.Thread.run(Thread.java:818) 08-04 11:55:50.787 15149-15709/com.jxust.asus.xmpp W/System.err: Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused) 08-04 11:55:50.787 15149-15709/com.jxust.asus.xmpp W/System.err: at libcore.io.Posix.connect(Native Method) 08-04 11:55:50.787 15149-15709/com.jxust.asus.xmpp W/System.err: at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111) 08-04 11:55:50.787 15149-15709/com.jxust.asus.xmpp W/System.err: at libcore.io.IoBridge.connectErrno(IoBridge.java:137) 08-04 11:55:50.787 15149-15709/com.jxust.asus.xmpp W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:122) 08-04 11:55:50.787 15149-15709/com.jxust.asus.xmpp W/System.err: ... 9 more
此时,你的第一反应可能是某出代码有问题或者是清单文件中某个权限忘加了,其实不是这样的。原来模拟器默认把127.0.0.1和localhost当做本身了,在模拟器上可以用10.0.2.2代替127.0.0.1和localhost,另外如果是在局域网环境可以用 192.168.0.x或者192.168.1.x(根据具体配置)连接本机,这样应该就不会报错了。
具体实例代码:
package com.jxust.asus.xmpp.activity; import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.jxust.asus.xmpp.R; import com.jxust.asus.xmpp.utils.ThreadUtils; import org.jivesoftware.smack.ConnectionConfiguration; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException; public class LoginActivity extends Activity { private TextView mEtUsername; private TextView mEtPassword; private Button mBtnLogin; public static final String HOST = "10.0.2.2"; // 主机IP public static final int PORT = 5222; // 对应的端口号 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); Log.i("main", "onCreate"); initView(); initListener(); } private void initView() { mEtUsername = (TextView) findViewById(R.id.et_username); mEtPassword = (TextView) findViewById(R.id.et_password); mBtnLogin = (Button) findViewById(R.id.btn_login); Log.i("main", "InitView"); } private void initListener() { Log.i("main", "initListener"); mBtnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String userName = mEtUsername.getText().toString(); final String password = mEtPassword.getText().toString(); // 判断用户名是否为空 if (TextUtils.isEmpty(userName)) { // 说明用户名为空 mEtUsername.setError("用户名不能为空"); return; } // 判断密码是否为空 if (TextUtils.isEmpty(password)) { // 说明密码为空 mEtPassword.setError("密码不能为空"); return; } // 在子线程里面进行连接操作 ThreadUtils.runInThread(new Runnable() { @Override public void run() { try { // 创建XMPP连接配置对象 ConnectionConfiguration config = new ConnectionConfiguration(HOST, PORT); // 额外的配置,方便我们开发,上线的时候再改回来 config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); // 明文传输数据,方便开发调试 config.setDebuggerEnabled(true); // 开启调试模式,方便我们查看具体发送的内容 // 开始创建连接 XMPPConnection conn = new XMPPConnection(config); // 开始连接 conn.connect(); // 连接成功了 // 开始登录 conn.login(password, userName); // 已经登录成功 ThreadUtils.runInUIThread(new Runnable() { // 回到主线程 @Override public void run() { Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_LONG).show(); } }); } catch (XMPPException e) { e.printStackTrace(); // 已经登录成功 ThreadUtils.runInUIThread(new Runnable() { // 回到主线程 @Override public void run() { Toast.makeText(getApplicationContext(), "登录失败", Toast.LENGTH_LONG).show(); } }); } } }); } }); } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.jxust.asus.xmpp"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".activity.SplashActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".activity.LoginActivity"></activity> </application> </manifest>
相关推荐
主要介绍了java.net.ConnectException: Connection refused问题解决办法的相关资料,需要的朋友可以参考下
"java.net.SocketException Connection reset 解决方法" 在 Java 编程中,SocketException 是一种常见的异常,特别是在网络编程中。Conexion reset by peer 是一种特殊的 SocketException,它发生在客户端和服务器...
在Android开发过程中,可能会遇到“Caused by: android.system.ErrnoException: write failed: ENOSPC (No space left on device)”这样的错误提示。这个错误通常发生在尝试向设备写入数据时,系统报告存储空间不足...
Caused by: java.net.ConnectException: Connection timed out: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java...
在Java应用程序运行过程中,"java.lang.OutOfMemoryError: PermGen space"错误是常见的一个问题,尤其是在使用Tomcat这样的Java应用服务器时。这个错误表明应用程序在 PermGen 区域(Permanent Generation)耗尽了...
Java中的`java.net.SocketException: Connection reset`是一个常见的网络编程错误,通常表示在TCP/IP通信过程中,连接突然中断。这个异常可能在客户端或服务器端发生,通常与数据传输的异常中断有关。 首先,我们来...
在Java编程中,`java.lang.NoClassDefFoundError` 是一个常见的运行时错误,它发生在类加载器尝试执行一个类,但在类路径中找不到该类的定义时。在这个特定的场景中,问题聚焦于 `net.sf.ezmorph.Morpher` 类。`...
Caused by: java.util.jar.JarException: file:/opt/code/signal-Server-master/target/TextSecureServer-1.87.jar has unsigned entries - org/whispersystems/dispatch/DispatchManager$4.class at javax.crypto....
在Java编程中,`java.lang.ClassNotFoundException` 是一个常见的运行时异常,通常发生在尝试通过类加载器加载指定类时,但找不到对应的字节码文件。在这个特定的问题中,`ClassNotFoundException` 引发的原因是缺少...
java.lang.NoClassDefFoundError: com/sun/activation/registries/LogSupport异常处理
然而,当你遇到“javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair”的错误时,这意味着在建立SSL/TLS连接时,Diffie-Hellman(DH)密钥交换算法遇到了问题。DH是一种非对称...
最后换了Tomcat8.5.54的才配置成功。下面就是我配置的过程,记录一下,与大家共勉。 1.首先公司的泛域名,运维给了ssl证书的文件包: 2.我们选取Tomcat的ssl证书,有jks文件和key的文件。 3....
在应用程序中调用不同服务时,经常会遇到No route to host程序异常的问题。下文分享该问题的排查过程与解决方法。
nested exception is: java.net.BindException: Address already in use: JVM_Bind 这里说的是1099端口被其它进程占用了. 二.解决办法 找出占用1099端口的进程,进入windows命令,查看什么进程占用了1099端口...
标题中的“Caused by: java.sql.SQLException: JZ0SJ: 没有在此数据库中发现元数据存取器信息。 请按 jConnect 文档中所述安装”是一个典型的错误信息,表明在尝试使用Java数据库连接(JDBC)驱动程序访问数据库时...
jdk 17需要 新增 配置 如下 jvm参数 --add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED --add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
Java中的`ClassNotFoundException`异常通常表示在尝试加载特定类时,JVM无法找到对应的字节码文件。这个异常可能由多种原因引起,但在本场景中,它与Java 9引入的模块系统及其对Java EE API的影响密切相关。 在Java...
Android Caused by: java.lang.ClassNotFoundException解决办法 出现问题: 08-13 18:29:22.924: E/AndroidRuntime(1875): Caused by: Java.lang.ClassNotFoundException:XXXXX in loader dalvik.system....
at java.net.URLClassLoader.findClass(URLClassLoader.java:434) at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:204) at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:688...