XMPP JID似乎总是为空

时间:2015-08-01 14:20:27

标签: objective-c xmpp xmppframework

我使用XMPP构建聊天应用程序。在尝试登录时,我看到我的JID实例始终为null。因此,我可以连接服务器,但我无法正确验证。

self.xmppStream.myJID = [XMPPJID jidWithString:@"efeuser"];
NSLog(@"%@",self.xmppStream.myJID.user);

它将myJID记录为null。

我还尝试使用register packet在Openfire上创建一个新用户,但是用户JID也是null。

 <iq xmlns="jabber:client" type="error" to="bowerchat.com/3df1adfc">
  <query xmlns="jabber:iq:register">
   <username/>
   <password>efe1414</password>
  </query>
  <error code="500" type="wait">
   <internal-server-error xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
  </error>
 </iq>

1 个答案:

答案 0 :(得分:1)

JID可以有两种形式:

user@example.com
example.com

如果它们包含@,那么@之前的部分就是用户部分。但是也可以省略userpart,就像在第二个例子中那样。这通常用于直接向主机发送。

self.xmppStream.myJID = [XMPPJID jidWithString:@"efeuser"];

这将创建一个没有userpart的新JID efeuser。这意味着:

NSLog(@"%@",self.xmppStream.myJID.user);

正确打印(null),因为没有用户部分。