当前位置: 首页 > 面试题库 >

无法使用aSmack 4.0.2建立新连接

单于奇略
2023-03-14
问题内容

我正在学习Android编程,现在已经尝试了几天。我正在编写应该连接到XMPP服务器的Android应用。我一直都在犯同样的错误,并且真的不知道我在做什么错。我已经尝试过使用Google找到的示例代码,但也无法与它们建立连接。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Context context = getApplicationContext();
    SmackAndroid.init(context);

    ConnectionConfiguration ConnectionConfiguration = new ConnectionConfiguration("192.168.0.101", 5222);
    ConnectionConfiguration.setDebuggerEnabled(true);
    XMPPConnection connection = new XMPPTCPConnection(ConnectionConfiguration);


  try {
    connection.connect();
} catch (ConnectionException e) {
    Log.e("ERROR", "ConnectionException", e);
    for (int i = 0; i < e.getFailedAddresses().size(); i++) {
        HostAddress element = e.getFailedAddresses().get(i);
        Log.e("ERROR", element.getErrorMessage().toString());
    }
} catch (Exception e) {
    Log.e("ERROR", "Exception", e);
}
   // Log into the server
   try {
    connection.login("user", "password", "SomeResource");
   } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

这是我得到的错误:

08-11 15:48:27.476: E/ERROR(11117): ConnectionException
08-11 15:48:27.476: E/ERROR(11117): org.jivesoftware.smack.SmackException$ConnectionException
08-11 15:48:27.476: E/ERROR(11117):     at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:433)
08-11 15:48:27.476: E/ERROR(11117):     at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:808)
08-11 15:48:27.476: E/ERROR(11117):     at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:396)
08-11 15:48:27.476: E/ERROR(11117):     at com.example.gps_pubsub.MainActivity.onCreate(MainActivity.java:34)
08-11 15:48:27.476: E/ERROR(11117):     at android.app.Activity.performCreate(Activity.java:5047)
08-11 15:48:27.476: E/ERROR(11117):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
08-11 15:48:27.476: E/ERROR(11117):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2056)
08-11 15:48:27.476: E/ERROR(11117):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
08-11 15:48:27.476: E/ERROR(11117):     at android.app.ActivityThread.access$700(ActivityThread.java:134)
08-11 15:48:27.476: E/ERROR(11117):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
08-11 15:48:27.476: E/ERROR(11117):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-11 15:48:27.476: E/ERROR(11117):     at android.os.Looper.loop(Looper.java:137)
08-11 15:48:27.476: E/ERROR(11117):     at android.app.ActivityThread.main(ActivityThread.java:4867)
08-11 15:48:27.476: E/ERROR(11117):     at java.lang.reflect.Method.invokeNative(Native Method)
08-11 15:48:27.476: E/ERROR(11117):     at   java.lang.reflect.Method.invoke(Method.java:511)
08-11 15:48:27.476: E/ERROR(11117):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
08-11 15:48:27.476: E/ERROR(11117):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
08-11 15:48:27.476: E/ERROR(11117):     at dalvik.system.NativeStart.main(Native Method)
08-11 15:48:27.476: E/ERROR(11117): 192.168.0.101:5222 Exception: null

我还检查了防火墙是否允许连接,并尝试连接到hosted.im服务而不是家庭服务器,结果相同。

I have this line added to MANIFEST:
<uses-permission android:name="android.permission.INTERNET"/>

问题答案:

解决方案是将连接代码放入单独的线程中。

public static final String HOST = "208.68.163.218"; //write your host name
public static final int PORT = 5222;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    connect();
}

public void connect() {
    Thread t = new Thread(new Runnable() {

        @Override
        public void run() {
            Context context = getApplicationContext();
            SmackAndroid.init(context);
            ConnectionConfiguration ConnectionConfiguration = new ConnectionConfiguration(HOST, PORT);
            ConnectionConfiguration.setDebuggerEnabled(true);
            XMPPConnection connection = new XMPPTCPConnection(ConnectionConfiguration);

            try {
                connection.connect();
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (SmackException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (XMPPException e) {
                e.printStackTrace();
            }
        }
    });
    t.start();
}


 类似资料:
  • 你好在我的代码它打破了我的请求,我尝试了几次,但1-2小时后bot状态不再改变。 我在ftp服务器上托管这些文件。 以后从未检索到任务异常:异常=ConnectionError(MaxRetryError(“HTTPConnectionPool(host='username.mydomain',port=80”):url超过最大重试次数:/project/total_visit/count.txt

  • 在使用PHP 5.6.3在Ubuntu 14.04上克隆存储库后,我无法运行PHP composer。phar selfupdate都不是php composer。phar更新。我收到以下消息: 我认为问题应该出在我本地拥有的证书上,但我无法想象如何解决它。 这是作曲家。json:

  • 有人能在这个问题上帮忙吗。

  • 我正在遵循下一个教程:https://docs.microsoft.com/en-us/azure/azure-functions/functions-twitter-email.我在Chrome连接到推特时遇到了一些问题,切换到边缘,并能够进行连接。 然而,对于本教程前面创建的情绪分析,我在两种浏览器中都不断收到消息 请检查您的帐户信息和/或权限,然后重试。 首先,我认为服务需要一段时间才能启动

  • 下面是Qpid客户端的配置,使用Camel上下文连接Artemis Broker。 上下文文件正像预期的那样开始,但是在本例中,qpid客户机无法连接到Apache Artemis 2.14.0代理。 我所看到的只是消费者端的一些线程块。 common-context.xml 注意:在使用CAMEL2.20.0版本时,即使在所有上下文都得到的情况下,这个单个xml文件中也有两个camel上下文

  • 问题内容: 我正在尝试从MS AD中检索一些信息:特定分支机构的成员,部门名称,职位等。 我使用了很多示例,包括Apache Directory LDAP API 和UnboundID,但是我无法与AD建立连接。 RDN: 为了进行搜索,我使用以下过滤器: 当我使用中的数据创建目录上下文时,出现异常: 如果未指定密码,则会出现以下异常: 我已验证我的帐户未锁定。 根据常见的活动目录LDAP绑定错误