【问题标题】:Delete Room Member from chat room using openfire server使用 openfire 服务器从聊天室中删除房间成员
【发布时间】:2016-11-27 02:24:16
【问题描述】:

我是 openfire xmpp 协议的新手。我已经成功创建聊天室,现在我想使用 REST API 从房间中删除房间成员。 我一直参考这里提到的link。 删除聊天室成员。

@RequestMapping(value = "leaveGroup", headers = {"ACCEPT=*/*"}, method = RequestMethod.POST, produces = "text/plain")
    public @ResponseBody
    String leaveGroup(HttpServletRequest request, HttpServletResponse response) {

        getRestClient();
        try {
            List<String> memberList = restApiClient.getChatRoom("chatrooms").getMembers();
            for (String string : memberList) {
                System.out.println("user::" + string);
            }
            // http://example.org:9090/plugins/restapi/v1/chatrooms/chatrooms/members/rajesh3@peacock-hp

            getJsonFromWEBService("http://192.168.168.24:9090/plugins/restapi/v1/chatrooms/chatrooms/members/rajesh3@peacock-hp");

            //List<String> memberList1 = restApiClient.getChatRoom("chatrooms").getMembers().remove("rajesh3@peacock-hp");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "leaveGroup";
    }

    public void getJsonFromWEBService(String serviceURL) {
        URL url;
        try {
            System.out.println("serviceURL::" + serviceURL);
            url = new URL(serviceURL);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            System.out.println("conn::" + conn);
            conn.setRequestProperty("Authorization", "Basic YWRtaW46MTIzNDU=");
            conn.setRequestProperty("Content-Type", "application/xml");
            conn.setRequestMethod("DELETE");
            conn.setDoInput(true);
            conn.setDoOutput(true);
            System.out.println("status::"+conn.getResponseCode());
            System.out.println("msg::"+conn.getResponseMessage());
            System.out.println("req::"+conn.getRequestProperties());
            //conn.getOutputStream().write(postDataBytes);
            conn.disconnect();
            System.out.println("end..........................................");
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }

    }

我有错误

Info: Response status::401
Info:   Response msg::Unauthorized

这里是 openfire 控制台的日志文件

2016.07.23 12:14:41 org.jivesoftware.openfire.container.PluginManager - error in opening zip file 
java.util.zip.ZipException: error in opening zip file 
at java.util.zip.ZipFile.open(Native Method) 
at java.util.zip.ZipFile.<init>(ZipFile.java:219) 
at java.util.zip.ZipFile.<init>(ZipFile.java:149) 
at java.util.jar.JarFile.<init>(JarFile.java:166) 
at java.util.jar.JarFile.<init>(JarFile.java:130) 
at org.jivesoftware.openfire.container.PluginManager$PluginMonitor.unzipPlugin(PluginManager.java:1069) 
at org.jivesoftware.openfire.container.PluginManager$PluginMonitor.run(PluginManager.java:961) 

如何解决这个问题?

【问题讨论】:

    标签: java api rest xmpp openfire


    【解决方案1】:

    如果您使用旧版本的 openfire,则不能在请求路径中使用 JID。 (rajesh3@peacock-hp)。 尝试只使用 rajesh3。

    【讨论】:

    • 我试过 rajesh3 但它不适合我。我用的openfire版本是4.0.2。
    【解决方案2】:

    在文档中可以阅读以下示例:

     /chatrooms/{roomName}/{roles}/{name}
    

    所以你的尝试是从名为“chatrooms”的聊天室中的“members”用户“rajesh3@peacock-hp”中删除,我认为这行不通!

    您需要聊天室名称(es:mychatroom@conference.peacock-hp),然后首先检查rajesh3@peacock-hp 是否已经是该聊天室的成员(查看 Openfire管理员以避免错误:

    Admin console -> Uppertab: Group Chat -> select the service -> select your chatroom -> on left "Permissions" ->  rajesh3@peacock-hp must figure out as "member")
    

    如果要在全局模式下删除 rajesh3@peacock-hp,请将 global 设置为 roomName


    编辑:顺便说一下,报错是插件没有正确加载,对删除房间成员操作没有影响。

    【讨论】:

      猜你喜欢
      • 2015-10-26
      • 2015-02-05
      • 1970-01-01
      • 2017-01-07
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 2015-03-29
      相关资源
      最近更新 更多