org.apache.xmlrpc.XmlRpcException: Ошибка -118 {ошибка, access_rules_unauthorized} - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь получить ответ get_roster в ejabberd через клиент XML-RPC, но я использую версию ejabberd 18.9, и она показывает мне эту ошибку:

org.apache.xmlrpc.XmlRpcException: Ошибка -118 Возникла проблема '{error, access_rules_unauthorized}' при выполнении команды get_roster с аргументами [{user, << "admin" >>}, {server, << "localhost" >>}]

Может кто-нибудь подсказать, как мне решить эту проблему?

Вот мой код Java-клиента:

XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
  config.setServerURL(new URL("http://localhost:4560"));
  XmlRpcClient client = new XmlRpcClient();
  client.setConfig(config);
  Hashtable<String, Object> params = new Hashtable<String, Object>();
  params.put("user", new String("admin"));
  params.put("server", new String("localhost"));
  List<Object> roster_params = new ArrayList<Object>();
  roster_params.add(params);

  Object result = client.execute("get_roster", roster_params);
  System.out.println("Result: " + result); 

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

проблема решена, возникла проблема с файлом ejabberd.yml.Я включил внешние конфигурации после удаления этого в файле конфигурации, теперь эти коды работают ...

порт: 5280 ip: "::" модуль: ejabberd_http request_handlers: "/ ws": ejabberd_http_ws "/ bosh": mod_bosh "/ api ": mod_http_api

0 голосов
/ 15 октября 2018

Возможно, вы настроили ejabberd таким образом, что вы должны предоставить данные аутентификации учетной записи с правами администратора.В этом примере, написанном на python, см. Структуру LOGIN.Извините, я не знаю, как это делается в Java.

import xmlrpclib

server_url = 'http://127.0.0.1:4560'
server = xmlrpclib.ServerProxy(server_url)

LOGIN = {'user': 'admin', 'server': 'localhost', 'password': 'mypass11', 'admin': True}

def calling(command, data):
    fn = getattr(server, command)
    return fn(LOGIN, data)

print ""
print "Calling with auth details:"
result = calling('get_roster', {'user':'user1', 'server':'localhost'})
print result
...