使用 smack 连接到 Google Talk

2024-06-22

我想开发一个连接到 Google Talk 并允许用户与朋友聊天的 Java 应用程序。我正在使用 smack API 和以下代码:

ConnectionConfiguration config = new ConnectionConfiguration("talk.google.com",5222,"gmail.com");
SASLAuthentication.supportSASLMechanism("PLAIN", 0);
XMPPConnection connection  = new XMPPConnection(config);
try {
    connection.connect();
} catch (XMPPException e) {
    e.printStackTrace();
}
try {
    connection.login("username", "password");
} catch (XMPPException e) {
    e.printStackTrace();
}

但我得到以下异常:

SASL authentication PLAIN failed: invalid-authzid: 
    at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:337)
    at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:203)
    at org.jivesoftware.smack.Connection.login(Connection.java:348)
    at Main.main(Main.java:21)

有人可以帮我解决这个问题吗?


这应该可以解决问题,非常简单

import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Presence;

 public class SenderTest 
{
public static void main(String args[])
{
    //ConnectionConfiguration connConfig = new ConnectionConfiguration("localhost", 5222);
        //connConfig.setSASLAuthenticationEnabled(false);
     //ConnectionConfiguration connConfig = new ConnectionConfiguration("localhost", 5222);
     ConnectionConfiguration connConfig = new ConnectionConfiguration("talk.google.com", 5222, "gmail.com");
       XMPPConnection connection = new XMPPConnection(connConfig);

        try {
            connection.connect();
            System.out.println("Connected to " + connection.getHost());
        } catch (XMPPException ex) {
            //ex.printStackTrace();
            System.out.println("Failed to connect to " + connection.getHost());
            System.exit(1);
        }
        try {
            connection.login("[email protected] /cdn-cgi/l/email-protection", "a");
            System.out.println("Logged in as " + connection.getUser());

            Presence presence = new Presence(Presence.Type.available);
            connection.sendPacket(presence);

        } catch (XMPPException ex) {
            //ex.printStackTrace();
            System.out.println("Failed to log in as " + connection.getUser());
            System.exit(1);
        }

    ChatManager chatmanager = connection.getChatManager();
    Chat newChat = chatmanager.createChat("[email protected] /cdn-cgi/l/email-protection", new MessageListener() {
        public void processMessage(Chat chat, Message message) {
            System.out.println("Received message: " + message);
        }
    });

    try {
        newChat.sendMessage("Howdy!");
        System.out.println("Message Sent...");
    }
    catch (XMPPException e) {
        System.out.println("Error Delivering block");
    }
}

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 smack 连接到 Google Talk 的相关文章

  • Java Set 和 List 接口的组合

    我有一个数据结构 我目前正在使用它ArrayList 我意识到在这个结构中我不希望出现任何重复项 我的第一个想法是使用某种形式的集合 但是顺序也很重要 经过一番谷歌搜索和搜索我发现的集合文档LinkedHashSet这几乎可以完成工作 不幸
  • JUnit:为测试类设置事务边界

    我想在开始任何测试方法之前启动数据库事务 并在运行所有测试结束时回滚所有事务 怎么做 我应该使用什么注释 RunWith SpringJUnit4ClassRunner class ContextConfiguration location
  • 找不到兼容的方法:将对象传递给方法时出错?

    我正在尝试为我们拥有的一些旧的遗留代码编写junit 下面是我正在为其编写 junit 并使用 jmockit 的 DataLogger 类中的方法 private Object extractMessageObjects final Ob
  • Thymeleaf 循环直到一个数字

    我使用 Thymeleaf 进行搜索并从服务器获取响应 这保存了结果的数量 response count 我想进行这样的迭代 for int i 1 i lt response count i if response page i
  • Java - 加载 .OBJ 文件

    我希望能够从 obj 文件获取信息 例如子组件的名称 那里有装载机可以做到这一点吗 Java3D 有一个 ObjectFile 但是我见过的方法列表让我觉得它不完全是我想要的 我自己解析文件会更好吗 谢谢 将要 几个月前我写了一个 java
  • Play2 - 模板 -> 递增

    如何在 play2 中声明并递增变量 在 scala html 模板 伪代码 counter for l lt list span class span counter 1 你真的需要计数器和递增吗 你可以这样做 for l index l
  • 如何让appium测试在iOS上运行得更快?

    目前 我正在使用 appium 进行 iOS 应用程序测试 并且我已经在 mac mini 机器上用 Java 编写了测试 我正在使用 Jenkins CI 来运行我的测试 我想更快地运行我的测试 因为目前它在 iOS 模拟器上相当慢 例如
  • 在连续 8 个测量到的 GC 抖动周期后关闭 JVM

    我正在编写 Apache beam BAtch 数据流 其中从 GCS 写入到 BQ 我的数据包含400万条记录 我已指定n1 HighMem 8机器类型 我的数据流以少量数据形式工作 我的用例我的模式不固定 所以我使用了 getFaile
  • 为什么使用 Hibernate 和 Oracle 10g 方言通过 JPA 创建名为 hibernate_sequence 的序列?

    我所有的实体都使用这种类型 Id Id GeneratedValue strategy GenerationType SEQUENCE generator MYENTITY SEQ SequenceGenerator name MYENTI
  • 线程运行如何启动?

    我正在寻找一个关于线程的小例子 为了创建线程 我们可以通过两种方式来实现 Runnable接口或通过扩展Thread 我使用第一种方式 package test public class test implements Runnable p
  • 如何添加对嵌入消息的反应 JDA

    当我执行命令 verify 时 我尝试发送和嵌入消息 然后它发送嵌入消息 但我找不到如何添加反应 我已经嵌入了消息并发送了它 但可以添加反应 import Main Bot import net dv8tion jda core Embed
  • 无法在 IntelliJ IDEA 中导入 javax.validation.constraints

    I can t import that simple library i have all jar files also i tried Ivalidate Caches Restart Maybe i have to add valida
  • 使用 Java 连接到 MongoDB 时遇到问题

    我正在尝试编写一个连接到 MongoDB 数据库的 Java 程序 我已经拥有要访问的数据库的 IP 地址 端口 userDB 用户名和密码 我将 mongodb driver 3 0 0 jar 文件设置为 Eclipse 中的引用库 我
  • 如何对文本文件执行二分搜索

    我有一个大文本文件 5Mb 我在 Android 应用程序中使用它 我将文件创建为预先排序的字符串列表 并且文件一旦创建就不会更改 如何对此文件的内容执行二分搜索 而不需要逐行读取来查找匹配的字符串 由于文件的内容不会改变 因此您可以将文件
  • 如果没有发生触摸事件,Android SurfaceView 会变慢

    我正在制作一款游戏 除了游戏循环之外一切都很顺利 我正在使用 SurfaceView 并绘制 2D Sprites 位图 目前游戏是一艘穿过小行星带的飞船 飞船停留在屏幕中央 手机向任一方向倾斜以移动小行星 小行星改变位置而不是玩家 当旧的
  • 使用 jsoup 收集倒计时器并为 android 设置计时器

    我想解析 eBay 上的倒计时器 span class 5g 20h span 如何用 jsoup 解析它以在 android studio 上创建倒计时器 我可以像平常一样解析它吗element 像下面这样 更新 getMsFromStr
  • Java 打印 PDF 并带有选项(装订、双面打印等)

    我有一个打印 PDF 的 java 程序 它使用 Apache PDFBox 创建PDDocument对象 来自 pdf 文档或某些情况下来自流 然后使用javax print API private boolean print File
  • 查找 Maven 使用的 Java 选项

    如何找到 Maven 正在使用哪些 Java 选项 Xmx Xms Xss 等 我发现有一种方法set它们是通过环境 MAVEN OPTS 实现的 现在我想要一种方法来确保它获得正确的设置 编辑 我相信它有所不同这个问题 https sta
  • 使用 == 比较 Long 对象类型和原始 int

    我有一个通过调用返回 Long 对象数据类型的方法 resp getResultCode 我想比较一下HttpStatus GONE value 它实际上只返回一个原始 int 值410 Long 会拆箱自身以正确地与 int 原语进行比较
  • 有人可以推荐 java 8 模式来替换 switch 语句吗?

    我有以下代码 public class A private String type String getType return type 现在在许多代码位置我都有这样的代码 switch a geType case A return new

随机推荐