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";
为什么我不能登录??
调用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