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")));