如何通过PHP从聊天室xmpp服务器删除成员

时间:2015-08-04 08:20:01

标签: php android web-services curl openfire

我试图通过php从XMPP服务器删除聊天室的成员。我正在使用curl请求。

我正在关注此文档: https://www.igniterealtime.org/projects/openfire/plugins/restapi/readme.html#delete-a-user-from-a-chat-room

$url = "http://188.***.***.***/plugins/restapi/v1/chatrooms/".$roomName."/members/".$userJID;
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/xml", "Authorization : ******")); //I am using plugin.userservice.secret key here
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");    
    $json_response = curl_exec($curl);

        $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        curl_close($curl);

它应该返回我的http响应201,但我收到服务器的响应登录形式或401(未经授权的用户)。

自从上一周以来我一直试图这样做,但是没有得到任何解决方案,请帮帮我。

提前感谢您的支持。

2 个答案:

答案 0 :(得分:2)

请注意,这个问题非常具体:它与特定的XMPP服务器实现(Openfire)有关,并且使用专有的非标准接口(其REST插件)。您正在使用Android环境,PHP和/或cURL这一事实无关紧要。

当您收到401回复时,身份验证会出现问题。

正如Roman在下面的评论中指出的那样,你使用了错误的文档。请改用this

Roman提出的另外两个观察结果(带外):

  • “授权:”中有剩余空格字符,需要是“授权:”
  • 你应该使用的属性是plugin.restapi.secret,而不是plugin.userservice.secret。

答案 1 :(得分:1)

由于这个问题已得到很好的解答,但我想回答Android特定的上下文,因此其他用户可以找到另一种方法。 RestApiClinet for android here有一个库。您可以直接将其集成为android模块。这是app已经在使用它。您还可以查看使用php编写的此客户端库。