Ios 错误400 XEP-0055的错误请求?

Ios 错误400 XEP-0055的错误请求?,ios,iphone,sdk,xmpp,ejabberd,Ios,Iphone,Sdk,Xmpp,Ejabberd,我从服务器上获取了可能的字段: <iq xmlns="jabber:client" from="vjud.company.com" to="testuser@company.com/iPhone" id="search1" type="result"><query xmlns="jabber:iq:search"> <instructions>You need an x:data capable client to search</instructio

我从服务器上获取了可能的字段:

<iq xmlns="jabber:client" from="vjud.company.com" to="testuser@company.com/iPhone" id="search1" type="result"><query xmlns="jabber:iq:search">

<instructions>You need an x:data capable client to search</instructions>
<x xmlns="jabber:x:data" type="form">
<title>Search users in vjud.company.com</title>
<instructions>Fill in the form to search for any matching Jabber User (Add * to the end of field to match substring)
</instructions>
<field type="text-single" label="User" var="user"/>
<field type="text-single" label="Full Name" var="fn"/>
<field type="text-single" label="Name" var="first"/>
<field type="text-single" label="Middle Name" var="middle"/>
<field type="text-single" label="Family Name" var="last"/>
<field type="text-single" label="Nickname" var="nick"/>
<field type="text-single" label="Birthday" var="bday"/>
<field type="text-single" label="Country" var="ctry"/>
<field type="text-single" label="City" var="locality"/>
<field type="text-single" label="Email" var="email"/>
<field type="text-single" label="Organization Name" var="orgname"/>
<field type="text-single" label="Organization Unit" var="orgunit"/>
</x>
</query>
</iq>
错误节:

<iq xmlns="jabber:client" from="vjud.company.com" to="testuser@company.com/iPhone" type="error" id="search1">
<query xmlns="jabber:iq:search"/>
<error code="400" type="modify">
<bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>

因此,基本上有两个问题:

  • 为什么响应中没有
    元素
  • 这是错误的真正原因吗
  • -服务器的响应应如下所示-

    非常感谢@legocia user,如果请求编写正确,您将得到如下内容(注意
    元素):

    
    vjud.company.com的搜索结果
    
    此搜索服务不支持“普通”XEP-0055搜索字段,但要求您提交响应“获取”请求时返回的
    x:data
    表单;看

    通过以下事实可以看出这一点:结果不包含任何建议的搜索字段作为query元素的子元素(参见XEP-0055的示例2),而且
    元素也这样说。这意味着您需要查看
    元素并提交它

    因此,您需要发送以下内容:

    <iq type='set'
        from='juliet@capulet.com/balcony'
        to='characters.shakespeare.lit'
        id='search4'
        xml:lang='en'>
      <query xmlns='jabber:iq:search'>
        <x xmlns='jabber:x:data' type='submit'>
          <field var='user'>
            <value>admin</value>
          </field>
        </x>
      </query>
    </iq>
    
    
    管理
    

    (这是XEP-0055中的示例8,修改为搜索用户名为“admin”的用户)

    谢谢!我会在10分钟内尝试并回复。顺便问一下,这种“隐藏”类型意味着什么?过度复制粘贴:)服务器可以发送FORM_type字段,以表明它遵循搜索字段含义的特定标准,客户端应该镜像它,但现在我看到它不存在于服务器呈现的表单中,因此没有理由包含它。更新答案。好的,我明白了。稍后我会尝试这个,但再次非常感谢您!没有人能回答以前和现在的问题。所以我尝试了,但我只能获取管理员值。如果我将其他注册用户,例如testuser2,我什么也得不到(没有元素,只有元素)。对此有何想法?
       <iq xmlns="jabber:client" from="vjud.company.com" to="testuser@company.com/iPhone" id="search1" type="result»>
    
     <query xmlns="jabber:iq:search"><x xmlns="jabber:x:data" type="result»>
     <title>Search Results for vjud.company.com</title>
     <reported>
     <field type="text-single" label="Jabber ID" var="jid»/>
     <field type="text-single" label="Full Name" var="fn»/>
     <field type="text-single" label="Name" var="first»/>
     <field type="text-single" label="Middle Name" var="middle»/>
     <field type="text-single" label="Family Name" var="last"/><field type="text-single" label="Nickname" var="nick»/>
     <field type="text-single" label="Birthday" var="bday»/>
     <field type="text-single" label="Country" var="ctry»/>
     <field type="text-single" label="City" var="locality»/>
     <field type="text-single" label="Email" var="email»/>
     <field type="text-single" label="Organization Name" var="orgname"/><field type="text-single" label="Organization Unit" var="orgunit»/>
     </reported>
     <item>
     <field var="jid»>
     <value>admin@company.com</value>
     </field>
     <field var="fn"><value/></field>
     <field var="last"><value/></field>
     <field var="first"><value/></field>
     <field var="middle"><value/></field>
     <field var="nick"><value/></field>
     <field var="bday"><value/></field>
     <field var="ctry"><value/></field>
     <field var="locality"><value/></field>
     <field var="email"><value/></field>
     <field var="orgname"><value/></field>
     <field var="orgunit"><value/></field></item>
     </x>
     </query>
     </iq>
    
    <iq type='set'
        from='juliet@capulet.com/balcony'
        to='characters.shakespeare.lit'
        id='search4'
        xml:lang='en'>
      <query xmlns='jabber:iq:search'>
        <x xmlns='jabber:x:data' type='submit'>
          <field var='user'>
            <value>admin</value>
          </field>
        </x>
      </query>
    </iq>