java - 如何从 Java 客户端对 ejabberd 进行基于访问的 xmlrpc 调用?

标签 java xml-rpc ejabberd xmlrpclib xmlrpcclient

我正在运行 ejabberd 和 ejabberd_xmlrpc 模块 - https://www.ejabberd.im/ejabberd_xmlrpc 在链接中我可以看到带有访问控制的 python、php 和 xmlrpc 客户端模块。我们如何使用java客户端编写相同的内容

这是我的代码:

     /* Code for ejabberd */        
     try {
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        config.setServerURL(new URL("http://ejabberd.sandwitch.in:4560"));
        config.setBasicUserName("nishant@ejabberd.sandwitch.in");
        config.setBasicPassword("freebsd");
        config.setConnectionTimeout(xmlrpcConnTimeout);
        config.setReplyTimeout(xmlrpcReplyTimeOut);
        XmlRpcClient client = new XmlRpcClient();
        client.setConfig(config);

        /* Command string */
        String command = "register";

        /* Parameters as struct */
        Map struct = new HashMap();
        struct.put("user", "nishant");
        struct.put("host", "ejabberd.sandwitch.in");
        struct.put("password", "nishant");

        Map struct1 = new HashMap();
        struct1.put("user", "arbit6");
        struct1.put("host", "ejabberd.sandwitch.in");
        struct1.put("password", "arbit6");          

        Object[] params = new Object[]{struct, struct1};
        HashMap<Object, Object> hashMap = (HashMap<Object, Object>) client.execute(command, params);
        for (Object obj : hashMap.keySet()) {
            System.out.println(ToStringBuilder.reflectionToString(obj));
        }
        for (Object obj : hashMap.values()) {
            System.out.println(ToStringBuilder.reflectionToString(obj));
        }
        System.out.println(ToStringBuilder.reflectionToString(hashMap.get("text")));
    } catch (Exception e) {
        System.out.println(e);
    }

但它给出了一个未知的调用寄存器。

最佳答案

通过将第一个结构中的主机更改为服务器来修复此问题。我的错误。

关于java - 如何从 Java 客户端对 ejabberd 进行基于访问的 xmlrpc 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33097883/

相关文章:

erlang - Mnesia聚类

java - 将 Azure Blob 存储与 java MVC 结合使用 Azure 网站

java - Jsonpath 显示具有动态名称的子项

ruby - 将任意长度的数组作为参数传递给 Ruby 中的另一个方法

android - 无法使用 Asmack 连接到我的 ejabberd 服务器

node.js - 使用 Nodejs 的 Xmpp ejabberd 自定义身份验证

java - Weblogic 12c 中未选取 Log4j2 文件位置

java - sap、abap、java、.net

url - 在运行时创建 XmlRpcUrl 接口(interface)

C# > XML-RPC.NET > Python MailMan