2016-07-29 5 views
0

Я пытаюсь установить соединение с Smack для Firebase Cloud Messaging CCS. У меня возникают проблемы со следующими защищенными интерфейсами Smack. Я точно не знаю, зачем нужны эти интерфейсы?Исключения, созданные внутри защищенных классов библиотеки Smack

Ниже, как я установить мой объект конфигурации строитель и мое подключение:

configBuilder = XMPPTCPConnectionConfiguration.builder(); 
configBuilder.setServiceName("192.168.1.74").setHost("fcm- xmpp.googleapis.com").setUsernameAndPassword(s1, s2)    .setPort(5236).setSendPresence(false).setCompressionEnabled(false).setCustomSSLContext(contexty) 
other_connection = new XMPPTCPConnection(configBuilder.build()); 
//other_connection object is an AbstractXMPPConnection object 

андроид/привкусом код пытается подключиться, но не в состоянии сделать это. Вот исключения: обратите внимание, что мой объект SSlcontext был инициализирован с помощью keymanagerfactory, который содержит хранилище ключей, которое содержит действительные сертификаты, проверенные центром сертификации.

Исключения:

**** Verification of void org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter.<init>(org.jivesoftware.smack.tcp.XMPPTCPConnection) took 135.634ms* 
07-29 03:30:14.211 3346-3408/rarigames.answerme V/RenderScript: 0xa172ca00 Launching thread(s), CPUs 2 
07-29 03:30:39.281 3346-3548/rarigames.answerme D/ricky: Unable to connect or login to FCM CCS. org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 25000ms (~25s). Used filter: No filter used or filter was 'null'. 
07-29 03:30:39.284 3346-3557/rarigames.answerme W/AbstractXMPPConnection: Connection closed with error 
                     org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT ��[email protected]:8 in [email protected]) 
                      at org.kxml2.io.KXmlParser.next(KXmlParser.java:432) 
                      at org.kxml2.io.KXmlParser.next(KXmlParser.java:313) 
                      at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1169) 
                      at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:948) 
                      at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:963) 
                      at java.lang.Thread.run(Thread.java:818) 

Как вы можете видеть классы Хлопайте, которые дают проблемы являются: защищенный класс XMPPTCPConnection.PacketReader и защищенный класс XMPPTCPConnection.PacketWriter Что такое BufferedReader упоминается в исключение пытается читать? Ответ XML от CCM FCM? Должен ли я аутентифицировать это соединение, прежде чем пытаться подключиться? Это то, что происходит здесь, когда я пытаюсь подключиться без аутентификации, объект подключения пытается аутентифицироваться, и пакеты XML отправляются в эти защищенные классы библиотеки Smack? Как я могу получить эти XML-документы, которые могут быть отправлены для целей аутентификации, если они действительно отправляются FCM CCS?

спасибо за любые советы или предложения

+0

Не могли бы вы уточнить, с чего вы пытаетесь подключиться к CCS. Похоже, вы пытаетесь подключиться к CCS от клиента Android, что не так, как это было разработано. –

+0

Я смог подключиться к CCM FCM. Оказывается, мне не хватало SSLsocket. Так что все, что я сделал, это использовать SSLcontext для создания SSLsocket. Теперь ошибки исчезли, я подключен к FCM CCS. Но теперь я получаю следующие ошибки: неправильная кодировка на X-OAUTH2. Кажется, что соединение пытается использовать SASLAuthentication с помощью библиотеки Smack. Я пытаюсь отменить регистрацию SASLMechanisms и заставить соединение использовать только SASLPlainMechanism, который запрашивает FCM CCS для клиентов android. Возможно, я должен переключить порядок проверки подлинности. @ArthurThompson –

+0

Где вы используете код smack, ваш сервер приложений или клиент Android? –

ответ

0

Хорошо все:

Все, что я здесь не хватает, чтобы избавиться от ошибок был объект SSLSocket. Поскольку я не знаю много о сокетах и ​​машинах к машинным соединениям, я понятия не имел. После долгих чтений я понял, что мне не хватает этого объекта. Ошибки исчезли теперь, когда соединение может протекать между моим Android-кодом и FCM CCS. поэтому я просто добавил этот метод вызова к моему объекту configBuilder:

.setSocketFactory(contexty.getSocketFactory()); 

Но, я бегу в новые ошибки, которые имеют дело с использованием SASLAuthentication привкус. Я скоро отправлю вопрос об этих ошибках. Кажется, я приближаюсь к установлению жизнеспособного соединения/входа в FCM CCS.

+0

Я получаю MucConfigurationNotSupportedException В android smack 4.2.0-beta1 Знаете ли вы решение? @i_o – MathaN

+1

Я не знаю о вашем исключении. Я занимаюсь исключениями в попытке установить соединение с CCS FCM. Все, что я могу вам сказать, это посмотреть на javadocs для Smack по следующей ссылке: http://download.igniterealtime.org/smack/docs/latest/javadoc/ Читайте о классах. Я думаю, что ваше исключение происходит из формата Multi User Chat. Возможно, есть класс, который занимается этим. Прочтите документы. @MathaN Я смог обработать множество исключений, прочитав методы и увидев, как они взаимодействуют с другими объектами Smack. –

+0

Хорошо Спасибо. :) – MathaN

Смежные вопросы