spark+smack+openfire实现请求响应简单流程 (三)

2014-11-24 10:21:33 · 作者: · 浏览: 3
getPacketReplyTimeout());

collector.cancel();

if (packet == null) {

} else {
System.out.println("final packet xml = " + packet.toXML());
}

con.disconnect();
}
}

package org.jivesoftware.expand.send.test;

import org.jivesoftware.smack.PacketCollector;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.provider.ProviderManager;
import org.jivesoftware.spark.SparkManager;

public class SendIQTestrr {

public static void run() throws Exception {
ProviderManager.getInstance().addIQProvider(TestrrIQ.ELEMENT,
TestrrIQ.NAMESPACE, new TestrrIQProvider());

XMPPConnection con = SparkManager.getConnection();

PacketCollector collector = con
.createPacketCollector(new PacketFilter() {
public boolean accept(Packet p) {
System.out.println("accept packet xml = " + p.toXML());
if (p instanceof TestrrIQ) {
TestrrIQ m = (TestrrIQ) p;
System.out.println(p.toXML());
System.out.println(m.toXML());
return true;
}
return false;
}
});

TestrrIQ disco = new TestrrIQ();

disco.setType(IQ.Type.GET);
disco.setNode(null);

con.sendPacket(disco);

Packet packet = collector.nextResult(SmackConfiguration
.getPacketReplyTimeout());

collector.cancel();

if (packet == null) {

} else {
System.out.println("final packet xml = " + packet.toXML());
}

con.disconnect();
}
}

4.触发测试方法(可自行编写触发测试类界面)
[java]
//此处仅提供按钮触发代码
JButton jButton = new JButton();
jButton.setLabel("hava a test");

jButton.addMouseListener(new MouseListener() {

@Override
public void mouseClicked(MouseEvent e) {
System.out.println("wahahaha!");
// buildCrowdList(); // TODO
try {
SendIQTestrr.run();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

@Override
public void mouseEntered(MouseEvent e) { // TODO
}

@Override
public void mouseExited(MouseEvent e) { // TODO
}

@Override
public void mousePressed(MouseEvent e) { // TODO
}

@Override
public void mouseReleased(MouseEvent e) { // TODO
}
});

//此处仅提供按钮触发代码
JButton jButton = new JButton();
jButton.setLabel("hava a test");

jButton.addMouseListener(new MouseListener() {

@Override
public void mouseClicked(MouseEvent e) {
System.out.println("wahahaha!");
// buildCrowdList(); // TODO
try {
SendIQTestrr.run();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

@Override
public void mouseEntered(MouseEvent e) { // TODO
}

@Override
public void mouseExited(MouseEvent e) { // TODO
}

@Override
public void mousePressed(MouseEvent e) { // TODO
}

@Ov