ejabberd android,无法使用Android中的XMPP客户端登录ejabberd服务器

我正在尝试连接&使用

Android中的XMPP客户端登录ejabberd服务器. XMPP客户端连接到服务器但未登录.我收到Exception消息,因为服务器没有响应.我不知道问题出在哪里.

以下是代码:

XMPP Client.java

package org.apache.android.xmpp;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.util.Log;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListView;

import org.jivesoftware.smack.PacketListener;

import org.jivesoftware.smack.XMPPConnection;

import org.jivesoftware.smack.filter.MessageTypeFilter;

import org.jivesoftware.smack.filter.PacketFilter;

import org.jivesoftware.smack.packet.Message;

import org.jivesoftware.smack.packet.Packet;

import org.jivesoftware.smack.util.StringUtils;

import java.util.ArrayList;

public class XMPPClient extends Activity {

private ArrayList messages = new ArrayList();

private Handler mHandler = new Handler();

private SettingsDialog mDialog;

private EditText mRecipient;

private EditText mSendText;

private ListView mList;

private XMPPConnection connection;

/**

* Called with the activity is first created.

*/

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

Log.i("XMPPClient", "onCreate called");

setContentView(R.layout.main);

mRecipient = (EditText) this.findViewById(R.id.recipient);

Log.i("XMPPClient", "mRecipient = " + mRecipient);

mSendText = (EditText) this.findViewById(R.id.sendText);

Log.i("XMPPClient", "mSendText = " + mSendText);

mList = (ListView) this.findViewById(R.id.listMessages);

Log.i("XMPPClient", "mList = " + mList);

setListAdapter();

// Dialog for getting the xmpp settings

mDialog = new SettingsDialog(this);

// Set a listener to show the settings dialog

Button setup = (Button) this.findViewById(R.id.setup);

setup.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

mHandler.post(new Runnable() {

public void run() {

mDialog.show();

}

});

}

});

// Set a listener to send a chat text message

Button send = (Button) this.findViewById(R.id.send);

send.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

String to = mRecipient.getText().toString();

String text = mSendText.getText().toString();

Log.i("XMPPClient", "Sending text [" + text + "] to [" + to + "]");

Message msg = new Message(to, Message.Type.chat);

msg.setBody(text);

connection.sendPacket(msg);

messages.add(connection.getUser() + ":");

messages.add(text);

setListAdapter();

}

});

}

/**

* Called by Settings dialog when a connection is establised with the XMPP server

*

* @param connection

*/

public void setConnection

(XMPPConnection

connection) {

this.connection = connection;

if (connection != null) {

// Add a packet listener to get messages sent to us

PacketFilter filter = new MessageTypeFilter(Message.Type.chat);

connection.addPacketListener(new PacketListener() {

public void processPacket(Packet packet) {

Message message = (Message) packet;

if (message.getBody() != null) {

String fromName = StringUtils.parseBareAddress(message.getFrom());

Log.i("XMPPClient", "Got text [" + message.getBody() + "] from [" + fromName + "]");

messages.add(fromName + ":");

messages.add(message.getBody());

// Add the incoming message to the list view

mHandler.post(new Runnable() {

public void run() {

setListAdapter();

}

});

}

}

}, filter);

}

}

private void setListAdapter

() {

ArrayAdapter adapter = new ArrayAdapter(this,

R.layout.multi_line_list_item,

messages);

mList.setAdapter(adapter);

}

}

SettingDialog.java

package org.apache.android.xmpp;

import android.app.Dialog;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import org.jivesoftware.smack.ConnectionConfiguration;

import org.jivesoftware.smack.XMPPConnection;

import org.jivesoftware.smack.XMPPException;

import org.jivesoftware.smack.packet.Presence;

/**

* Gather the xmpp settings and create an XMPPConnection

*/

public class SettingsDialog extends Dialog implements android.view.View.OnClickListener {

private XMPPClient xmppClient;

public SettingsDialog(XMPPClient xmppClient) {

super(xmppClient);

this.xmppClient = xmppClient;

}

protected void onStart() {

super.onStart();

setContentView(R.layout.settings);

getWindow().setFlags(4, 4);

setTitle("XMPP Settings");

Button ok = (Button) findViewById(R.id.ok);

ok.setOnClickListener(this);

}

public void onClick(View v) {

String host = "10.0.2.2";//getText(R.id.host);

String port = "5222";//getText(R.id.port);

String service = "@domain";//getText(R.id.service);

final String username = "userid@domain";//getText(R.id.userid);

final String password = "password";//getText(R.id.password);

// Create a connection

ConnectionConfiguration connConfig =

new ConnectionConfiguration(host, Integer.parseInt(port), service);

final XMPPConnection connection = new XMPPConnection(connConfig);

new Thread(new Runnable()

{

public void run()

{

try {

connection.connect();

Log.i("XMPPClient", "[SettingsDialog] Connected to " + connection.getHost());

} catch (XMPPException ex) {

Log.e("XMPPClient", "[SettingsDialog] Failed to connect to " + connection.getHost());

Log.e("XMPPClient", ex.toString());

xmppClient.setConnection(null);

}

try {

connection.login(username, password);

Log.i("XMPPClient", "Logged in as " + connection.getUser());

// Set the status to available

Presence presence = new Presence(Presence.Type.available);

connection.sendPacket(presence);

xmppClient.setConnection(connection);

} catch (XMPPException ex) {

Log.e("XMPPClient", "[SettingsDialog] Failed to log in as " + username);

Log.e("XMPPClient", ex.toString());

xmppClient.setConnection(null);

}

}

}).start();

dismiss();

}

private String getText(int id) {

EditText widget = (EditText) this.findViewById(id);

return widget.getText().toString();

}

}

请任何人都可以提供帮助.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值