Smack 4.1 回复超时内无响应

2024-01-08

我在我的 Android 应用程序中使用以下代码:

Thread d = new Thread(new Runnable() {

    @Override
    public void run() {
        SmackConfiguration.setDefaultPacketReplyTimeout(10000);
        XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
                  .setUsernameAndPassword("admin", "password")
                  .setServiceName("192.168.0.200")
                  .setHost("192.168.0.200")
                  .setPort(5223).setSecurityMode(SecurityMode.ifpossible)
                  .build();

        AbstractXMPPConnection conn2 = new XMPPTCPConnection(config);
        try {
            conn2.connect();
            conn2.login();

            Presence presence = new Presence(Presence.Type.unavailable);
            presence.setStatus("Gone fishing");
            // Send the packet (assume we have an XMPPConnection instance called "con").
            conn2.sendStanza(presence);

        } catch (SmackException | IOException | XMPPException e) {
            e.printStackTrace();
            Log.d("TAG", e.toString());
        }

        ChatManager chatmanager = ChatManager.getInstanceFor(conn2);
        Chat newChat = chatmanager.createChat("[email protected] /cdn-cgi/l/email-protection");

        try {
            newChat.sendMessage("Howdy!");
        }
        catch (NotConnectedException e) {
            e.printStackTrace();
        }
    }
});

d.start();

这将返回此错误:

05-14 18:07:48.030: D/TAG(19470): org.jivesoftware.smack.SmackException$NoResponseException:无响应 在回复超时内收到。超时为 10000 毫秒(~10 秒)。用过的 过滤器:未使用过滤器或过滤器为“空”。

我已经在 192.168.0.200 设置了本地服务器。有人能告诉我问题是什么吗?

我正在使用这些库:


我已成功连接到本地 openfire 服务器并在没有 SSL 的情况下登录。这是我的代码

public class NewClientActivity extends Activity {
    EditText etUsername, etPassword;
    Button bSubmit;
    AbstractXMPPConnection mConnection;
    ConnectionListener connectionListener = new ConnectionListener() {
        @Override
        public void connected(XMPPConnection xmppConnection) {
            Log.d("xmpp", "connected");
            try {
                SASLAuthentication.registerSASLMechanism(new SASLMechanism() {
                    @Override
                    protected void authenticateInternal(CallbackHandler callbackHandler) throws SmackException {

                    }

                    @Override
                    protected byte[] getAuthenticationText() throws SmackException {
                        byte[] authcid = toBytes('\u0000' + this.authenticationId);
                        byte[] passw = toBytes('\u0000' + this.password);
                        return ByteUtils.concact(authcid, passw);
                    }

                    @Override
                    public String getName() {
                        return "PLAIN";
                    }

                    @Override
                    public int getPriority() {
                        return 410;
                    }

                    @Override
                    public void checkIfSuccessfulOrThrow() throws SmackException {

                    }

                    @Override
                    protected SASLMechanism newInstance() {
                        return this;
                    }
                });
                mConnection.login();
            } catch (XMPPException e) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(NewClientActivity.this, "Incorrect username or password", Toast.LENGTH_LONG).show();
                    }
                });
                e.printStackTrace();
            } catch (SmackException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void authenticated(XMPPConnection xmppConnection, boolean b) {
            Log.d("xmpp", "authenticated");
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(NewClientActivity.this,"Logged in successfully...",Toast.LENGTH_LONG ).show();
                }
            });
        }

        @Override
        public void connectionClosed() {
            Log.d("xmpp", "connection closed");
        }

        @Override
        public void connectionClosedOnError(Exception e) {
            Log.d("xmpp", "cononection closed on error");
        }

        @Override
        public void reconnectionSuccessful() {
            Log.d("xmpp", "reconnection successful");
        }

        @Override
        public void reconnectingIn(int i) {
            Log.d("xmpp", "reconnecting in " + i);
        }

        @Override
        public void reconnectionFailed(Exception e) {
            Log.d("xmpp", "reconnection failed");
        }
    };

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

    private void findViews() {
        etUsername = (EditText) findViewById(R.id.etUsername);
        etPassword = (EditText) findViewById(R.id.etPassword);
        bSubmit = (Button) findViewById(R.id.bSubmit);
        bSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String[] params = new String[]{etUsername.getText().toString(), etPassword.getText().toString()};
                new Connect().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
            }
        });
    }

    class Connect extends AsyncTask<String, Void, Void> {
        @Override
        protected Void doInBackground(String... params) {

            XMPPTCPConnectionConfiguration config = null;
            XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder();
            builder.setServiceName("192.168.1.60").setHost("192.168.1.60")
                    .setDebuggerEnabled(true)
                    .setPort(5222)
                    .setUsernameAndPassword(params[0], params[1])
                    .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
                    .setCompressionEnabled(false);
            config = builder.build();

            mConnection = new XMPPTCPConnection(config);
            try {
                //mConnection.setPacketReplyTimeout(10000);
                mConnection.addConnectionListener(connectionListener);
                mConnection.connect();
            } catch (SmackException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (XMPPException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Smack 4.1 回复超时内无响应 的相关文章

  • Android 的@hide 注解到底有什么作用?

    Android中很多内部API都被标记出来了 hide What exactly这是吗 另一个答案 https stackoverflow com questions 17035271 what does hide mean in the
  • 从 java 活动 *.java 启动 kotlin 活动 *.kt?

    使缓存无效 重新启动 帮助我 我在java类中的代码是 Intent intent new Intent view getActivity AddPaymentActivity class view getActivity startAct
  • Android - 带图像的按钮 - 禁用按钮时图像变暗

    在 Android 中 我有一个包含图像和文本的按钮 禁用该按钮时 文本会自动变灰 但图像保持不变 当按钮被禁用时是否可以使图像变暗而不需要两个单独的图像 在您的代码中 您还可以使用彩色滤光片 http developer android
  • 覆盖乔达一周的第一天?

    是否有可能覆盖乔达弱的第一天sunday 因为 Joda 使用Monday作为一周的第一天 如果有办法的话 谁能解释一下 我在 SOF 中提到了以下主题 乔达时间 一周的第一天 https stackoverflow com questio
  • 在 Android 模拟器上运行 Google 地图 v2

    我尝试在我的 Android 应用程序中实现 Google 地图 v2 但不幸的是 我收到的不是地图 而是以下消息 是否可以在 Android 模拟器 平台 4 2 上运行这些地图 目前 引用 Google Android Map API
  • 错误包括 bouncycastle 提供商

    我需要使用bouncycastle provider我的项目中的库 我已将其包含在 gradle 项目中 apply plugin application sourceCompatibility 1 6 version 1 0 0 main
  • RecyclerView onClick notificationItemRemoved 不会触发 onBindView

    I use notifyItemRemoved 方法我想更改其他剩余项目 但该方法没有触发onBindView 方法 除了使用notifyDataSetChanged 我想要附带的动画notifyItemRemoved method 如果您
  • 在 Hibernate 的 XML 配置文件中指定默认值

    我通过映射配置文件配置 Hibernate
  • mysql 准备好的语句错误:MySQLSyntaxErrorException

    我使用准备好的语句编写了选择语句 每次尝试运行都会出现此错误 我如何克服这个错误 我的jdbc连接器是mysql connector java 5 1 13 bin jar 我的代码 public Main add ad to getAdD
  • 如何在列表视图中选择时启用视频序列自动播放?

    大家好 有人可以与我分享一下我如何编写我的 viewvideo java 类 以便它允许自动播放视频功能 自动排序在列表视图中播放所选视频的任务 从当前位置到最新录制的视频 按顺序直到最新的视频播放完毕 这类似于 YouTube 自动播放功
  • Java泛型类型参数中的问号是什么意思? [复制]

    这个问题在这里已经有答案了 这是取自斯坦福解析器附带的一些示例的一小段代码 我已经用 Java 进行了大约 4 年的开发 但从未对这种风格的代码应该表示什么有非常深入的理解 List
  • 从另一个活动返回时 Android ListView 项目没有响应?

    我从 ArrayAdapter 创建一个 ListView ListView的每一行都有一个ImageView和一个TextView 现在我使用 setOnItemClickListener 处理单击事件 lv getListView lv
  • OpenShift 服务代理超时

    我有一个应用程序部署在OpenShift 容器平台 v3 6 它由多个彼此互连的服务组成 The frontend服务调用一个耗时的函数backend服务 通过 REST 调用 但之后30秒它收到一个 504网关超时 信息 Frontend
  • 如何在flutter app android中添加Startapp广告?

    我想用其他广告更改 AdMob 广告 一些个人问题 如何在flutter app android中添加Startapp广告 有什么方法可以将启动广告添加到我的 flutter 应用程序 android 中 StartApp 现已更名为 St
  • 将 Spritekit 游戏转换为 Android?

    是否有任何新选项可以将 spritekit 游戏转换为 Android 游戏 似乎唯一的选择是用 Java 重新编码所有内容或使用 Cocos2D LibGDX 等 很不幸的是 不行 而且带有 Apportable 服务的跨平台 Sprit
  • 如何使用Android Studio录制Android屏幕?

    我已经在 Mac 上的 Applications 文件夹中安装了 Android Studio 我认为 sdk 位于包内容中 但现在我想使用 AShot jar 录制屏幕以获取应用程序的演示视频 我必须放弃SDK的路径 当我给出我认为正确的
  • Java无损保存原始JPEG

    如下所示 我有第一张图像是原始 JPEG 图像 第二张图像用于缓冲图像 然后使用保存http www lac inpe br JIPCookbook 6040 howto compressimages jsp http www lac in
  • 当框架被拖动时,如何设置 JWindow 的位置位于文本字段下方?

    我正在制作一个自动完成项目 就像谷歌一样 我的框架中有一个 jtextfield 每当我在该字段中输入内容时 该文本字段下方就会出现一个 JWindow 并且该窗口来自另一个类 现在的问题是 每当我拖动框架时 如何使窗口始终出现在文本字段下
  • SWT StyledText 有高度限制吗?

    我正在尝试创建一个应用程序 其中包含在 ScrolledComposite 中显示的 StyledText 框 我在 StyledText 框中显示大量行时遇到困难 超过 2 550 行似乎会导致问题 StyledText 框本身不能有滚动
  • 更改 ActionMode 溢出图标

    有没有办法更改 ActionMode Overflow 图标而不更改 正常 ActionBar 的图标 我仍然需要弄清楚如何仅更改 ActionMode Actionbar 内部的溢出图标 因为我更改了默认操作栏中的溢出图标 该图标在 Ac

随机推荐

  • Android 多行工具栏标题

    我有一个工具栏 在横向模式下不像平常那 么宽 但它的高度比平常更高 因此我想在横向模式下将标题设置为多行 准确地说是两行 我尝试了一些方法 将 TextView 放入工具栏内 但是当我尝试访问 TextView 以设置其标题 因为标题是可变
  • awk CSV 带标题 Windows 拆分

    好的 我有一个 csv 文件 需要根据列值进行拆分 这很好 但我无法在每个文件中打印标题 目前我使用 awk FS output 3 csv print 0 gt output test csv 它根据第 3 列分割文件 但我不知道如何向每
  • 如何在 Go 中执行三叉树的深度复制? [复制]

    这个问题在这里已经有答案了 我正在尝试执行以下结构的深层复制 Ternary Tree type Tree struct Left Tree Mid Tree Right Tree Value interface Parent Tree O
  • SQL Server:向日期时间字段添加秒?

    对于 SQL 人员来说 这应该是一个垒球 我知道我可以用类似的东西添加到 int 字段中UPDATE tblUser SET Total Total 2 但是向日期时间字段添加秒的语法是什么 我正在使用 SQL Server 2008 UP
  • 使用指令最佳实践[重复]

    这个问题在这里已经有答案了 有没有any以下功能或优化之间的区别 SomeClass cpp include SomeClass h include SomeOtherClassInSomeClassNamespace h using na
  • 静态变量和静态方法的区别

    我知道当您使用静态变量时 它的值在所有用户之间共享 static string testValue protected void SomeMethod object sender EventArgs e testValue TextBox1
  • java中'static int'和'int'之间的区别[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 在java中我们何时何地使用 sta
  • Java:正则表达式模式匹配器有大小限制吗?

    我的模式是类似 OR 的 word1 word2 word3 我大约有800字 这会是一个问题吗 你只受到记忆力和理智的限制
  • java.lang.UnsupportedOperationException:尝试序列化 java.lang.Class:org.hibernate.proxy.HibernateProxy

    我将 Restful Web 服务 Jersy 实现 与 JSF 应用程序一起使用 并使用 Json 来获取数据 如下所示 carObjectDao new GenericDAO
  • 如何在applicationContext中从Spring中排除一个类?

    这里我们只想从某些类路径中排除一个类 例如 com abc projectA service orderService sectionA orderService class 但是 还有另一个具有相同名称但位于不同类路径中的类 com ab
  • 安装 android OpenCV 构建时无法定位错误

    我正在尝试安装 Android OpenCV 以在 eclipse 下使用它 为此 我首先安装了 NDK ADT 和 eclipse 插件 我正在使用 Windows8 和 Eclipse Juno 这样我就成功构建并运行了 NDK 的示例
  • 将单元名称显式添加到 Delphi 的项目源的优点和缺点 [重复]

    这个问题在这里已经有答案了 我已经使用 Delphi 很多年了 我的每个项目都是从源代码编译成 exe 没有包等 如果在任何地方使用 MyUnitA pas 它只是在另一个单元的接口或实现部分中声明这需要它 这一切在任何地方都工作得很好 这
  • Android Kotlin:错误未解决参考:DaggerAppComponent

    我今天已使用 Dagger 2 将 Kotlin 插件安装到现有项目中 在安装 Kotlin 之前 我对 Dagger 没有任何问题 然而 现在编译器抱怨 Error 5 32 Unresolved reference DaggerAppC
  • 我可以传递 Web 方法参数(例如查询字符串)吗?

    这里我使用网络方法 InsertData 我可以传递查询等参数吗string json aspx InsertData username name 而不是传递为data 如果我使用类似的查询字符串有什么好处吗 ajax type POST
  • Java 将字符串数组映射为整数数组

    我在 SO 上找到了这段代码 用于将字符串映射到整数 Arrays stream myarray mapToInt Integer parseInt toArray 但如何让它映射到 Integer 类型而不是原始 int 呢 我尝试从In
  • 在 Android 中保存长文本的最佳实践

    我想知道将字符串值存储在strings xml文件 即使字符串非常大 更具体地说 我有一个游戏 我在其中显示游戏规则 所有字符的总和大于 700 个字符 目前 我将这些长字符串分解为较小的字符串 分成段落 所以我想知道 拥有那些包含超过 7
  • Phonegap/Cordova 地理定位在 Android 上不起作用

    我在两个模拟器中的 Android 上运行地理定位时遇到了麻烦 即使我geo fix通过 telnet 和设备上 适用于 iOS WP8 和浏览器 当我使用以下代码向设备询问位置时 我总是收到错误 在我的情况下是自定义的 Retrievin
  • 如何捕获 ExoPlayer 的所有错误?

    我实现了 ExoPlayer 作为我的应用程序的播放器 但我不知道如何捕获所有 ExoPlayer 错误以避免应用程序崩溃 我添加了以下侦听器 但它没有捕获所有错误 我必须使用 DRM 它有时会因某些问题而崩溃 但我之前无法设置侦听器 因为
  • C# - 删除仅提供 Control 为 ToolTip 的 ToolTip

    是的 这个问题已经被问过here https stackoverflow com questions 1165540 how do i remove a tooltip currently bound to a control at SO
  • Smack 4.1 回复超时内无响应

    我在我的 Android 应用程序中使用以下代码 Thread d new Thread new Runnable Override public void run SmackConfiguration setDefaultPacketRe