Android 无法使用Smack 4.1库从发件人接收自定义IQ
我一直在尝试向客户端发送自定义iq,但收到名为“不可用服务”的错误。我在发送时得到的错误类型是“取消”。我寻找这种错误类型的解决方案,发现它与不使用完整jid有关,但在我的代码中,正如您所看到的,我使用的是完整jid。有人可以帮助我吗 这是我正在使用的代码Android 无法使用Smack 4.1库从发件人接收自定义IQ,android,smack,Android,Smack,我一直在尝试向客户端发送自定义iq,但收到名为“不可用服务”的错误。我在发送时得到的错误类型是“取消”。我寻找这种错误类型的解决方案,发现它与不使用完整jid有关,但在我的代码中,正如您所看到的,我使用的是完整jid。有人可以帮助我吗 这是我正在使用的代码 public class CustomIQ extends IQ { String mMyData; public CustomIQ(String mydata) { super("list", "test:namespace")
public class CustomIQ extends IQ {
String mMyData;
public CustomIQ(String mydata) {
super("list", "test:namespace");
this.mMyData=mydata;
}
@Override
protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) {
xml.rightAngleBracket();
xml.element("myData", mMyData);
return xml;
}
}
Custom provider class
public class CustomIQProvider extends IQProvider {
@Override
public Element parse(XmlPullParser parser, int initialDepth) throws Exception {
String data="nothing";
// Start parsing loop
int eventType = parser.next();
outerloop:
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_TAG:
String elementName = parser.getName();
if ("myData".equals(elementName)) {
data = parser.nextText();
}
break;
case XmlPullParser.END_TAG:
if (parser.getDepth() == 3) {
break outerloop;
}
break;
}
eventType = parser.next();
}
return new CustomIQ(data);
}
}
Finally i send packet like this.
enter code here
CustomIQ myIq = new CustomIQ("test data");
myIq.setType(IQ.Type.get);
myIq.setTo("aman@attriaman-android/Smack");
try {
mConnection.sendPacket(myIq);
} catch (Exception exp) {
exp.printStackTrace();
}
我做错了什么?提前谢谢