如何使用 C# 在 XMPP 服务器中使用 jabber net 创建新用户?

Posted

技术标签:

【中文标题】如何使用 C# 在 XMPP 服务器中使用 jabber net 创建新用户?【英文标题】:How to create a new user using jabber net in XMPP server using C#? 【发布时间】:2014-07-07 11:45:17 【问题描述】:

我在 C# 中使用 jabber.net 库创建/注册新用户时遇到了困难。我正在使用 ejabberd 作为服务器。这是我的代码:

 private void btnCreateAccount_Click(object sender, EventArgs e)
    
        IQ iq1 = new IQ(jabberClient1.Document);
        iq1.ID = "reg1";
        iq1.Type = IQType.set;
        iq1.InnerXml = "<query xmlns='jabber:iq:register'></query>";
        jabberClient1.Tracker.BeginIQ(iq1, new jabber.connection.IqCB(on_create_user), null);


        IQ iq = new IQ(jabberClient1.Document);
        iq.ID = "reg2";
        iq.Type = IQType.set;
        iq.InnerXml = "<query xmlns='jabber:iq:register'><username>hax0r</username><password>god</password></query>";
        jabberClient1.Tracker.BeginIQ(iq, new jabber.connection.IqCB(on_create_user), null);
    

    private void on_create_user(object sender, IQ iq, object data)
    
        Error err = iq.Error;
        if (err != null)
            Console.WriteLine("Error " + err.Condition + " on querying user " + data);
    

当我运行上面的代码时,C# 会抛出一个错误:

异常:抛出:“对象引用未设置为 对象。” (System.NullReferenceException) A System.NullReferenceException 被抛出:“对象引用未设置为 一个对象的实例。”

我做错了什么?非常感谢任何帮助。

我仍然对如何在 C# 中使用 jabber.net 创建新用户感到困惑。 我做了以下但还没有成功:

 JabberClient jc = new jabber.client.JabberClient(this.components);
 jc.AutoReconnect = 3F;
 jc.AutoStartCompression = true;
 jc.AutoStartTLS = true;
 jc.InvokeControl = this;
 jc.KeepAlive = 30F;
 jc.LocalCertificate = null;
 jc.Password = "username";
 jc.User = "password";
 jc.Server = "example.com";
 jc.Register(new JID(jc.User, jc.Server, null));

非常感谢任何提示。

【问题讨论】:

What is a NullReferenceException and how do I fix it? 如果没有堆栈跟踪,该异常将毫无用处 【参考方案1】:

请查看示例目录。 MainForm.cs 完全符合您的要求。特别是第 764 行的 Register 调用,然后是 OnRegisterInfoOnRegistered 的回调。

【讨论】:

感谢您的回复。我仍然对如何注册新用户感到困惑。您能否分享一些代码,以便我可以通过提供用户名、密码、服务器名来完成此操作,然后我可以注册用户?

以上是关于如何使用 C# 在 XMPP 服务器中使用 jabber net 创建新用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jabber net 在 c# Windows 应用程序中实现文件传输

如何在 C# 中使用 agsXMPP 获取聊天记录

如何在 c# 中关闭任何浏览器时从 XMPP 注销?

如何解析 XMPP?

如何在 C# 中将参与者添加到 XMPP 聊天室?

XMPP 客户账户注册