如果我向应用程序发送一个XMPP示例消息,并将类型=‘result’发送到应用程序,那么一切都很好。但是,如果我将类型更改为“set”或“get”,则应用程序会回复错误消息“功能未实现”。这是一个奇怪的,因为我遵循一个教程,从生产者方面。
详细信息:
我在这个页面上尝试了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应用程序发送以下消息(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>类型=‘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应用程序不响应,这类是一个错误消息。
在类型等于set的情况下,应用程序不响应此错误消息,我需要添加/更改哪些内容?
发布于 2016-06-03 19:43:27
https://stackoverflow.com/questions/37602158
复制相似问题