java - 带有 "feature-not-implemented"错误消息的 Smack 4.1 响应到类型为 'set' 的自定义 IQ

标签 java smack

如果我向应用程序发送一 strip 有 type='result' 的 XMPP 示例消息,一切都很好。但是,如果我将类型更改为“设置”或“获取”,应用程序会回复一条错误消息“功能未实现”。 这很奇怪,因为我遵循了生产者方面的教程。

详情:

我从这个页面试过http://www.igniterealtime.org/builds/smack/docs/latest/documentation/providers.html 自定义 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>

type='get' 导致相同的行为。

但如果我只将类型更改为“结果”:

<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的情况下,应用程序不回复此错误消息,我必须添加/更改什么?

最佳答案

关于java - 带有 "feature-not-implemented"错误消息的 Smack 4.1 响应到类型为 'set' 的自定义 IQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37602158/

相关文章:

android - 使用 smack 重新连接到 xmpp 服务器

java - 尝试使用 Smack 登录 XMPP 服务器导致 SASL "not authorized"

java - 无法将简单的 Java Smack 示例连接到 Google Talk

java - 在 Spring+JPA 中更新级联子级时出现 UnsupportedOperationException

java - Selenium Webdriver 不打开 url,而是仅打开空白页面

java - 在JavaFX中动态添加元素到窗口

android - 使用 Smack for Android 通过 XMPP 实现 FCM

JavaFX 使用 Smack API (xmpp) 从 Java 回调

java - 在 Eclipse 3.6.1 上安装 AspectJ 时遇到问题

java - 在我的 Spring MVC Magnolia 模块中获取 JCR Session 对象的更好方法是 LifeTimeJCRSessionUtil