Я пытаюсь написать приложение с протоколом 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, сертификат TLS/SSL вашего XMPP-сервера не заслуживает доверия. Обычно это происходит, когда этот сертификат самоподписан, истек или не выдается для IP-адреса, кроме имени DNS. Если сертификат выдан на your-server.yourdomain.com, вы также должны подключиться к your-server.yourdomain.com, а не IP-адрес проверяемого сертификата.
В этом обработчике событий вы можете указать jabber-net для подключения к серверу desipte недействительного сертификата. IIRC это делается путем возврата истины. Для тестирования это нормально, для готового продукта вы должны представить сертификат пользователю в любом случае (например, веб-браузеры).
Редактирование/ответ на ваши комментарии: сервер сообщает вам, что все еще что-то не так с вашим запросом. Не зная фактического запроса, трудно угадать, в чем проблема. Возможно, вы можете найти подсказку в журнале сервера. Если нет, вам следует более внимательно изучить трафик, особенно запрос, который не выполняется.
Если вам нужно обнюхать трафик, вот код, который я использовал для отключения TLS и сжатия, чтобы я мог видеть что-то в проводе:
client.SSL = false;
client.PlaintextAuth = true;
client.AutoStartTLS = false;
client.AutoStartCompression = false;
Btw, это также предотвратит ошибку недопустимого сертификата, однако пользователь должен настроить его, хочет ли он использовать TLS или нет.