Xmpp 使用asmack 4.0.2连接到openfire服务器时出错

Xmpp 使用asmack 4.0.2连接到openfire服务器时出错,xmpp,asmack,Xmpp,Asmack,我试图使用Asmack library 4.0.2连接到Openfire服务器。即使我为端口提供了正确的ip地址,我也无法连接到服务器 public static final String HOST = "192.168.1.100"; public static final int PORT = 9090; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInsta

我试图使用Asmack library 4.0.2连接到Openfire服务器。即使我为端口提供了正确的ip地址,我也无法连接到服务器

public static final String HOST = "192.168.1.100"; 
public static final int PORT = 9090;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    connect();
        }

public void connect(){
    AsyncTask<Void, Void, Boolean> connectionThread = new AsyncTask<Void, Void, Boolean>(){ 
    @Override
    protected Boolean doInBackground(Void... arg0){
    boolean isConnected = false;

    ConnectionConfiguration config = new ConnectionConfiguration(HOST,PORT);
    config.setReconnectionAllowed(true);
    config.setSecurityMode(SecurityMode.disabled);
    config.setDebuggerEnabled(true);

    XMPPConnection connection = new XMPPTCPConnection(config);

    try{
    connection.connect();
    Log.i("XMPPChatDemoActivity","Connected to " + connection.getHost());
    isConnected = true;
    } catch (IOException e){
        Log.e("XMPPIOExceptionj", e.toString());
    } catch (SmackException e){
        Log.e("XMPPSmackException", e.toString()+" Host:"+connection.getHost()+"Port:"+connection.getPort());
    } catch (XMPPException e){
        Log.e("XMPPChatDemoActivity", "Failed to connect to "
                + connection.getHost());
        Log.e("XMPPChatDemoActivity", e.toString());
    }

    return isConnected;
    }
    };  
    connectionThread.execute();
    } 
您能确认端口9090是XMPP协议的正确端口吗?Openfire的默认安装将端口9090设置为用于访问基于HTTP的配置控制台。我建议您尝试连接到服务器端口下面列出的Openfire配置控制台的主索引页上指定的XMPP连接端口

以下内容摘自Openfire配置控制台:


5222客户端连接到服务器的标准端口。连接可以加密,也可以不加密。您可以更新此端口的安全设置。

我认为您的主机地址也错了,您必须使用该地址连接openfire服务器。它必须是127.0.0.1或只写localhost。端口是5222,可以从客户端到服务器进行通信。

您是否尝试过使用3参数构造函数?第二天,我用5222试了试,效果很好。可能是第一次它无法工作,因为我在将端口从9090更改为5222后没有重新启动电脑和服务器。无论如何,感谢您的帮助:@fpsColton我在将android虚拟设备连接到xmpp服务器时遇到了问题。我用这个连接到xmpp,我得到了,你能告诉我这个的解决方案吗?@devil,我从来没有使用过smack,我只是在猜测,但从我所看到的来看,ConnectionConfiguration的构造函数似乎无法解析主机名“pc”。我会直接使用运行xmpp服务器的pc的IP。127.0.0.1将不起作用,循环回到avd@fpsColton感谢您的关注,通过solutionAlways发布异常的完整堆栈跟踪解决了此问题!
08-12 22:10:20.496:    E/XMPPSmackException(4341):org.jivesoftware.smack.SmackException$NoResponseException Host:nullPort:0