Java 在4.1响应中加上一个“符号”;“未实现功能”;发送到类型为';设置';

Java 在4.1响应中加上一个“符号”;“未实现功能”;发送到类型为';设置';,java,smack,Java,Smack,如果我向应用程序发送一条带有type='result'的XMPP示例消息,一切都很好。但如果我将类型更改为“set”或“get”,应用程序将返回一条错误消息“featurenotimplemented”。 这是一个很奇怪的问题,因为我遵循制作人的指导 细节: 我试着从这一页开始 示例自定义IQProvider示例 我将Gradle 2.9与以下依赖项一起使用: dependencies { //xjc 'com.github.jaxb-xew-plugin:jaxb-xew-plugin

如果我向应用程序发送一条带有type='result'的XMPP示例消息,一切都很好。但如果我将类型更改为“set”或“get”,应用程序将返回一条错误消息“featurenotimplemented”。 这是一个很奇怪的问题,因为我遵循制作人的指导

细节: 我试着从这一页开始 示例自定义IQProvider示例

我将Gradle 2.9与以下依赖项一起使用:

dependencies {
    //xjc 'com.github.jaxb-xew-plugin:jaxb-xew-plugin:1.1'
    compile 'org.codehaus.groovy:groovy-all:2.3.11'
    compile "org.igniterealtime.smack:smack-java7:4.1.0"
    // Optional for XMPPTCPConnection
    compile "org.igniterealtime.smack:smack-tcp:4.1.0"
    // Optional for XMPP-IM (RFC 6121) support (Roster, Threaded Chats, …)
    compile "org.igniterealtime.smack:smack-im:4.1.0"
    // Optional for XMPP extensions support
    compile "org.igniterealtime.smack:smack-extensions:4.1.0"
    testCompile group: 'junit', name: 'junit', version: '4.11'
}
我根据描述实现了MyIQProvider和MyIQ类,并将提供程序注册到:

ProviderManager.addIQProvider("myiq", "example:iq:foo", new MyIQProvider());
如果我向Smack Java应用程序发送以下消息(type='set')

<iq type='set' from='apfel_vie@jabber.de/colibriVtn' to='birne_vie@jabber.de/colibriVen'>
  <myiq xmlns='example:iq:foo' token='secret'>
    <user age='42'>John Doe</user>
    <location>New York</location>
  </myiq>
</iq>

无名氏
纽约
然后,应用程序回复为

<iq id='time_1' type='error' to='apfel_vie@jabber.de/colibriVtn' from='birne_vie@jabber.de/colibriVen'>
    <error type='cancel'>
        <feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
    </error>
</iq>
<iq type='result' from='apfel_vie@jabber.de/colibriVtn' to='birne_vie@jabber.de/colibriVen' id='time_1'>
  <myiq xmlns='example:iq:foo' token='secret'>
    <user age='42'>John Doe</user>
    <location>New York</location>
  </myiq>
</iq>

type='get'产生相同的行为

但是如果我只将类型更改为“result”

<iq id='time_1' type='error' to='apfel_vie@jabber.de/colibriVtn' from='birne_vie@jabber.de/colibriVen'>
    <error type='cancel'>
        <feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
    </error>
</iq>
<iq type='result' from='apfel_vie@jabber.de/colibriVtn' to='birne_vie@jabber.de/colibriVen' id='time_1'>
  <myiq xmlns='example:iq:foo' token='secret'>
    <user age='42'>John Doe</user>
    <location>New York</location>
  </myiq>
</iq>

无名氏
纽约
Java Smack应用程序不会回复此类错误消息


如果类型等于set,应用程序不会回复此错误消息,我需要添加/更改什么?

您需要注册一个IQ请求处理程序:

嗨,兄弟,我面临相同的问题..正如您所说。我没有注册IQRequestHandler(新的IQRequestHandler()重写方法返回空..对吗?我还是遇到同样的问题。请给出你的答案commend@Manikandan很抱歉我迟了回复。我希望,你已经解决了你的问题。然而,很难说你的案例到底出了什么问题。如果你看到一个工作代码,也许会有所帮助。这是我工作项目相关代码的链接t: