openfire MUC服务的HTTP错误请求

openfire MUC服务的HTTP错误请求,http,openfire,bad-request,Http,Openfire,Bad Request,这是我的密码 $xml_data ='<chatRoom> <broadcastPresenceRoles> <broadcastPresenceRole>moderator</broadcastPresenceRole> <broadcastPresenceRole>participant</broadcastPresenceRole>

这是我的密码

$xml_data ='<chatRoom>
        <broadcastPresenceRoles>
            <broadcastPresenceRole>moderator</broadcastPresenceRole>
            <broadcastPresenceRole>participant</broadcastPresenceRole>
            <broadcastPresenceRole>visitor</broadcastPresenceRole>
    </broadcastPresenceRoles>
    <canAnyoneDiscoverJID>false</canAnyoneDiscoverJID>
    <canChangeNickname>false</canChangeNickname>
    <canOccupantsChangeSubject>false</canOccupantsChangeSubject>
    <canOccupantsInvite>false</canOccupantsInvite>
    <creationDate>2014-02-12T15:52:37.592+01:00</creationDate>
    <description>Global Chat Room</description>
    <logEnabled>true</logEnabled>
    <loginRestrictedToNickname>false</loginRestrictedToNickname>
    <maxUsers>30</maxUsers>
    <membersOnly>false</membersOnly>
    <moderated>false</moderated>
    <naturalName>global-1</naturalName>
    <owners>
        <owner>admin@localhost</owner>
    </owners>
    <password>test</password>
    <persistent>true</persistent>
    <publicRoom>true</publicRoom>
    <registrationEnabled>false</registrationEnabled>
    <roomName>global</roomName>
</chatRoom>';

 $opts = array('http' =>
         array(
           'method'  => 'POST',
           'header'  => "Content-Type: text/xml",//\r\n".
           "Authorization: Basic ".base64_encode("admin:admin"),//."\r\n",
           'timeout' => 60
          )
     );

 `$URL = 'http://localhost:9090/plugins/mucservice/chatrooms'`;

        $ch = curl_init($URL);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml', "Authorization: Basic ".base64_encode("admin:admin")."\r\n"));
        curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml_data");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $output = curl_exec($ch);

        echo 'Code : '.$code;
        print_r($output);           
        curl_close($ch);
4.这件事我已经拖了很久了。。请帮帮我


提前感谢。

您需要将内容类型设置为“内容类型:应用程序/xml”而不是“内容类型:文本/xml”。内容类型:text/xml在您获得某些内容时有效,但是通过PUT和POST,您需要设置“Content-Type:application/xml”

另一个可能的问题是如下所示:

 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml', "Authorization: Basic ".base64_encode("admin:admin")."\r\n"));
尝试将其更改为:

 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', 'Authorization: Basic '.base64_encode("admin:admin")));

我已经在我的问题中发布了openfire日志。。如果此日志可以解决任何问题,请帮助我。看起来它无法解码您的基本授权标头-按该方向挖掘它在另一个GET请求中使用相同的身份验证标头,内容类型:text/xml。。那么我应该如何进一步呢?我建议使用一个xmpp客户机库——它将为您处理所有我试图在openfire中创建空间的低级时刻。。而且xmpp库对于php不提供帮助来创建room:(如果我弄错了,请告诉我
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', 'Authorization: Basic '.base64_encode("admin:admin")));