标签: smack

(a)Smack在登录时返回"service-unavailable(503)"错误()

我正在尝试使用asmack库在Android上实现一个简单的jabber messenger.这是代码:

public boolean login()
{
    if (connection != null && connection.isConnected())
    {
        Log.i("XMPP", connection.getHost());
        try 
        {
            connection.login(USERNAME, PASSWORD);
        } 
        catch (XMPPException e) 
        {
            e.printStackTrace();
            return false;
        }
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我在connection.login()之后得到的异常(连接看起来很好):

service-unavailable(503)
at org.jivesoftware.smack.NonSASLAuthentication.authenticate(NonSASLAuthentication.java:77)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:239)
at org.jivesoftware.smack.Connection.login(Connection.java:353)
at com.someapp.networking.XMPPMessenger.login(XMPPMessenger.java:60)
at com.someapp.XMPPService.onCreate(XMPPService.java:33)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2780)
at android.app.ActivityThread.access$3200(ActivityThread.java:119)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1917)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

可能是什么错误?

java android smack asmack

5
推荐指数
1
解决办法
3449
查看次数

Smack"没有来自服务器的响应".不知道为什么我会收到此错误

我在本地计算机上安装了一个openfire服务器.我正在尝试连接此服务器,但收到"服务器无响应"错误.不知道为什么?

我在成功连接到服务器的同一台机器上有spark客户端.

能帮我解决一下这个问题吗?

以下是可能有用的日志详细信息

07-30 01:01:02.570: I/System.out(424): 01:01:02 AM SENT (1156489960): <stream:stream to="192.168.1.3"             xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">
07-30 01:01:02.593: I/System.out(424): 01:01:02 AM RCV  (1156489960): <?xml version='1.0'  encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client"  from=
07-30 01:01:02.593: I/System.out(424): 01:01:02 AM RCV  (1156489960): "praleeds" id="39bc1246" xml:lang="en" version="1.0"><stream:features><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"></startt
07-30 01:01:02.593: I/System.out(424): 01:01:02 AM RCV  (1156489960): ls><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism><mechanism>
07-30 01:01:02.593: I/System.out(424): 01:01:02 AM SENT (1156489960): <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
07-30 01:01:02.617: I/System.out(424): 01:01:02 AM RCV  (1156489960): ANONYMOUS</mechanism><mechanism>CRAM-MD5</mechanism></mechanisms><compression xmlns="http://jabber.org/features/compress"><metho
07-30 01:01:02.617: I/System.out(424): 01:01:02 AM RCV  (1156489960): d>zlib</method></compression><auth xmlns="http://jabber.org/features/iq-auth"/><register xmlns="http://jabber.org/features/iq-re
07-30 01:01:02.623: …
Run Code Online (Sandbox Code Playgroud)

android openfire smack

5
推荐指数
2
解决办法
1万
查看次数

无法通过smack连接到XMPP服务器:服务器没有响应

我坚持这个问题,我无法解决它.

码:

 ConnectionConfiguration config = new ConnectionConfiguration(host, port);
        config.setDebuggerEnabled(true);
        config.setSASLAuthenticationEnabled(true);
        config.setSecurityMode(ConnectionConfiguration.SecurityMode.enabled);

        XMPPConnection connection = new XMPPConnection(config);
try{
            connection.connect();
            connection.login(login, password);
            //auth.authenticate(login, password, host);
        }
        catch (XMPPException exc){
            exc.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

完整堆栈跟踪:

/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/bin/java -Didea.launcher.port=7544 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 11 CE.app/bin" -Dfile.encoding=UTF-8 -classpath "/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/deploy.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/javaws.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/jce.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/plugin.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Classes/charsets.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Classes/classes.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Classes/jsse.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Classes/ui.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/ext/apple_provider.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/ext/sunpkcs11.jar:/Users/dmitry/IdeaProjects/smacker/target/classes:/Users/dmitry/IdeaProjects/smacker/lib/smack-3.2.1.jar:/Users/dmitry/IdeaProjects/smacker/lib/smackx-3.2.1.jar:/Applications/IntelliJ IDEA 11 CE.app/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain Main
Connection failed. No response from server.: 
    at org.jivesoftware.smack.PacketReader.startup(PacketReader.java:119)
    at org.jivesoftware.smack.XMPPConnection.initConnection(XMPPConnection.java:568)
    at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration(XMPPConnection.java:527)
    at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:953)
    at SessionsHandler.openSession(SessionsHandler.java:62)
    at Main.main(Main.java:16)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Run Code Online (Sandbox Code Playgroud)

Smack调试输出:

在:

<stream:stream to="xmpp.odnoklassniki.ru" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0"> …
Run Code Online (Sandbox Code Playgroud)

java xmpp smack

5
推荐指数
1
解决办法
7051
查看次数

Presence听众不在asmack工作

我正在使用asmack开发Android的聊天应用程序.连接已经建立,我也可以登录.我添加了IQ数据包的监听器,这工作正常.我也为Presence数据包添加了监听器,这是我的代码:

PacketTypeFilter presenceFilter=new PacketTypeFilter(Presence.class);

connection.addPacketListener(new PacketListener() {
    public void processPacket(Packet packet) {
        Presence presence = (Presence)packet;

        Log.d("test1","Presence packet came :From:"+presence.getFrom()+",Packet ID:"+presence.getPacketID()+",Priority:"+presence.getPriority()+",To:"+presence.getTo()
                            +",Exn:"+presence.toXML());

        if (presence.getType() == Presence.Type.available) {
             Log.d("test1","User available");
        }
        else if (presence.getType() == Presence.Type.unavailable) {
                        Log.d("test1","User not available");
        }
    }
}, presenceFilter);
Run Code Online (Sandbox Code Playgroud)

我的问题是,这个监听器永远不会被调用任何传入的Presence数据包.它适用于外向的.我无法使用Roster来处理状态,因为我们的服务器正在使用一些智能路由服务来处理用户可用性.我在这里做错了吗?任何输入都会有所帮助.

android xmpp smack asmack

5
推荐指数
1
解决办法
1163
查看次数

文件传输:在android中使用smack传输文件时显示文件大小0KB

获取问题,而使用的Smack库和明火服务器在Android文件传输,对其它设备接收空文件,而一个设备传送文件到另一个,它展示的0KB size.when我打开它,它显示空白screen.i不知道它背后的问题是什么.

我正在使用此链接进行实施.我的代码是:

public void ReceiveFile() {

    ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection);

    if (sdm == null)``
    {
        sdm = new ServiceDiscoveryManager(connection);
        Log.e("service discovery", "SDM");
    sdm.addFeature("http://jabber.org/protocol/disco#info");

    sdm.addFeature("jabber:iq:privacy");
    }

    FileTransferManager manager = new FileTransferManager(connection);
    Log.e("after manager", "manager");
    manager.addFileTransferListener(new FileTransferListener() {
       public void fileTransferRequest(final FileTransferRequest request) {
          new Thread(){
             @Override
             public void run() {
                 Log.e("Thread running", "starting");
                IncomingFileTransfer transfer = request.accept();
                File mf = Environment.getExternalStorageDirectory();
                Log.e("path", mf.getAbsoluteFile()+"/DCIM/" + transfer.getFileName());
                File file = new File(mf.getAbsoluteFile()+"/DCIM/" + transfer.getFileName());

                try{
                    transfer.recieveFile(file);
                    while(!transfer.isDone()) {
                       try{
                          Thread.sleep(1000L); …
Run Code Online (Sandbox Code Playgroud)

android xmpp openfire file-transfer smack

5
推荐指数
0
解决办法
1448
查看次数

smack RosterListener无法在Android中运行

目前我正在使用Xmpp SMACK API工作聊天应用程序.但是当我调用addrosterListener时,我没有获得Presence当前状态.我必须参考 http://www.igniterealtime.org/builds/smack/docs/3.2.2 /javadoc/org/jivesoftware/smack/RosterListener.html.请帮助我.

roster.addRosterListener(new RosterListener() {
                        @Override
                        public void presenceChanged(Presence presence) {


                            Log.d("pewsence ", "pewsence Status: " + presence.getFrom());
                            Log.d("pewsence ", "pewsence to Status: "
                                    + presence.getTo() + " " + presence);

                            // Called when the presence of a roster entry is
                            // changed
                        }

                        @Override
                        public void entriesUpdated(Collection<String> arg0) {
                            // Called when a roster entries are updated.

                        }

                        @Override
                        public void entriesDeleted(Collection<String> arg0) {
                            // Called when a roster entries are removed.
                        }

                        @Override
                        public …
Run Code Online (Sandbox Code Playgroud)

java android smack

5
推荐指数
1
解决办法
1842
查看次数

java.io.EOFException: no more data available - expected end tag &lt;/stream:stream&gt; to close start tag &lt;stream:stream&gt;

I am working on a chat app using xmpp,As per our requirement we have three server Apache Tomcat 7,ejabbered 2.1.11 and mysql 5.5,

to run xmppbot on tomcat  used below library
    -Smack-core-4.0.3.jar
    -smack-tcp-4.0.3.jar
    -xlightweb2.5.jar
    -xpp3-1.1.3.3.jar
    -xSocket-2.4.6.jar
Run Code Online (Sandbox Code Playgroud)

Using above library I am able to Connect with ejabberd and able to login with my login id and password but after some time of logging in connection gets close automatically and a am getting below stack trace

Sep 16, 2014 4:36:01 PM org.jivesoftware.smack.XMPPConnection …
Run Code Online (Sandbox Code Playgroud)

java ejabberd smack asmack

5
推荐指数
1
解决办法
3449
查看次数

创建新用户时Smack XMPP错误:禁止 - 身份验证

我正在尝试通过管理员帐户创建新用户.但是我收到了auth错误.我试着像回答这个,但它并不能帮助.

我创建新用户的代码:

AccountManager accountManager = AccountManager.getInstance(mConnection);

        if (accountManager.supportsAccountCreation()) {
            try {
                accountManager.createAccount(username, password);
            }

            catch (XMPPException ex) {
                LOG.info(ex.getMessage(), ex);
            }

        }
        else{
            LOG.error("Server doesn't support creating new accounts");
        }
Run Code Online (Sandbox Code Playgroud)

我允许在配置中注册ALL:

{access, register, [{allow, all}]}.

{access, register_from, [{allow, all}]}.

{mod_register, [
 ...
 {ip_access, [{allow, "127.0.0.0/8"},
              {deny, "0.0.0.0/0"}]},
 {access_from, register_from},
 {access, register}
]},
Run Code Online (Sandbox Code Playgroud)

即使有这个配置我有错误:

org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: forbidden - auth
    at org.jivesoftware.smack.XMPPException$XMPPErrorException.ifHasErrorThenThrow(XMPPException.java:135)
    at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:232)
    at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:213)
    at org.jivesoftware.smackx.iqregister.AccountManager.createAccount(AccountManager.java:272)
    at org.jivesoftware.smackx.iqregister.AccountManager.createAccount(AccountManager.java:244)
Run Code Online (Sandbox Code Playgroud)

PS Smack 4.1.0

java xmpp smack mongoose-im

5
推荐指数
1
解决办法
2551
查看次数

ejabberd和smack握手失败了

我在我的云服务器上运行ejabberd,我认为它运行良好,因为我可以使用pidgin从我的PC连接到它.(ejabberdctl connected-users-number在我连接时回答1,在我离线时回答0.)

现在我尝试使用smack包从我的android应用程序连接到if,并且我得到IOException:

javax.net.ssl.SSLHandshakeException: Handshake failed

Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb897c858: Failure in SSL library, usually a protocol error
error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:795 0xacf6bf89:0x00000000)
W/System.err? at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
W/System.err? at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:318)
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序代码:

XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
config.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
config.setConnectTimeout(30000);
config.setUsernameAndPassword(username + "@" + service, password);
config.setServiceName(service);
config.setHost(host);
config.setCompressionEnabled(true);
config.setPort(port);
config.setDebuggerEnabled(true);
config.setSocketFactory(SSLSocketFactory.getDefault());

SmackConfiguration.DEBUG = true;
try {
    TLSUtils.acceptAllCertificates(config);
    XMPPTCPConnection connection = new XMPPTCPConnection(config.build());
    connection.connect();
    connection.login();

} catch (SmackException ex) {
    ex.printStackTrace();
    chatClient.setConnection(null);
} catch(IOException ex){
    ex.printStackTrace();
    chatClient.setConnection(null);                 
} catch ( …
Run Code Online (Sandbox Code Playgroud)

java ssl android ejabberd smack

5
推荐指数
1
解决办法
1510
查看次数

如何使用smack从stanza离线pubsub消息

我想获得离线消息,我正在使用pubsub并且我在节点上添加了addItemEventListener但是当用户上线时,用户在节中获取消息而不是在eventlistener的handlePublishedItems方法中.我想知道如果我做错了什么?这就是它在节中接收消息的原因?因为我有libraby类的显示方法,这里是表演

public void addItemEventListener(@SuppressWarnings("rawtypes") ItemEventListener listener)
    {
        StanzaListener conListener = new ItemEventTranslator(listener); 
        itemEventToListenerMap.put(listener, conListener);
        pubSubManager.getConnection().addSyncStanzaListener(conListener, new EventContentFilter(EventElementType.items.toString(), "item"));
}
Run Code Online (Sandbox Code Playgroud)

这也是设置stanzalistener但我没有在handlePublishedItems()方法中得到它.我的代码和流程在下面,任何人都可以帮助我吗?提前致谢

XMPPTCPConnectionConfiguration config = null;
            try {
                config = XMPPTCPConnectionConfiguration.builder()
                        .setUsernameAndPassword("user1", "Test_123")
                        .setHost(getString(R.string.domain))
                        .setXmppDomain(getString(R.string.domain))
                        .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
                        .setPort(5222)
                        .setDebuggerEnabled(true) // to view what's happening in detail
                        .build();
            } catch (XmppStringprepException e) {
                e.printStackTrace();
            }

            conn1 = new XMPPTCPConnection(config);
            conn1.setUseStreamManagement(true);
            XMPPTCPConnection.setUseStreamManagementDefault(true);
            conn1.setUseStreamManagementResumption(true);

            ReconnectionManager.getInstanceFor(conn1).enableAutomaticReconnection();
//            conn1.setPacketReplyTimeout(10000);
            try {
                conn1.connect();
                if (conn1.isConnected()) {
                    Log.w("app", "conn done");
                }
                conn1.login();

                if (conn1.isAuthenticated()) {
                    Log.w("app", …
Run Code Online (Sandbox Code Playgroud)

android xmpp publish-subscribe smack

5
推荐指数
0
解决办法
278
查看次数