Login in Jabber-net

本文关键字:Jabber-net in Login | 更新日期: 2023-09-27 18:12:40

我正在尝试用XMPP协议和Jabber-net编写一个应用程序。

有什么问题?

        JabberClient client = new JabberClient();
        client.User = USER_NAME;
        client.Password = PASSWORD;
        client.Server = SERVER;
        client.Resource = "MyTestClient"; 
        client.Port = 5222;
        client.AutoReconnect = 1;
        client.AutoPresence = false;
        client.KeepAlive = 10;
        client.PlaintextAuth = true;
        client.AutoLogin = true;
        client.OnConnect += client_OnConnect;
        client.OnAuthenticate += new bedrock.ObjectHandler(client_OnAuthenticate);
        client.OnInvalidCertificate += client_OnInvalidCertificate;
        client.OnError += new bedrock.ExceptionHandler(client_OnError);
        client.OnIQ += client_OnIQ;
        client.OnProtocol += client_OnProtocol;
        client.Connect();

和全局变量是这样的

        string USER_NAME = "09371231231";
        string PASSWORD = "09371231231";
        string SERVER = "181.29.101.224";

为什么我不能登录??

Login in Jabber-net

调用onInvalidCertificate事件处理程序时,XMPP服务器的TLS/SSL证书不受信任。这通常发生在证书是自签名的、过期的或者不是为IP地址而是为DNS名称颁发的情况下。如果证书是颁发给your-server.yourdomain.com,你也必须连接到your-server.yourdomain.com,而不是要检查证书的IP地址。

在此事件处理程序中,您可以告诉jabber-net即使证书无效也要连接到服务器。IIRC是通过返回true来完成的。对于测试,这是可以的,对于成品,您应该向用户提供证书(就像web浏览器一样)。

编辑/回复你的评论:服务器告诉你,你的请求仍然有问题。在不知道实际需求的情况下,很难猜测问题出在哪里。也许您可以在服务器日志中找到提示。如果没有,您应该仔细查看流量,特别是失败的请求。

如果你需要嗅探流量,这里是我用来禁用TLS和压缩的代码,这样我就可以在wireshark跟踪中看到一些东西:

client.SSL = false;
client.PlaintextAuth = true;
client.AutoStartTLS = false;
client.AutoStartCompression = false;

Btw,这也将防止无效的证书错误,但是它应该由用户配置,他是否想要使用TLS