XMLRPC IP.Board не удалось найти модуль API с именем - PullRequest
0 голосов
/ 20 октября 2011

У меня есть случай: сделайте работу с форумом с помощью API для IP Engine Forum.Board.

Итак, я написал следующий код:

package ru.test;

import java.net.MalformedURLException;
import java.net.URL;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

public class mainClass {

    /**
     * @param args
     */
    public static void main(String[] args) {
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        try {
            config.setServerURL(new URL("http://hbf.by/interface/board/index.php"));
            XmlRpcClient client = new XmlRpcClient();
            client.setConfig(config);
            Object[] params = new Object[]{"74600b7376c4b1db69eaf8f155f2d157", "ipb","','"};

            Object result = client.execute("fetchOnlineUsers", params);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (XmlRpcException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

Но я получаю исключение

org.apache.xmlrpc.XmlRpcException: IP.Board could not locate an API module called ''
    at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:197)
    at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:156)
    at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:143)
    at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:69)
    at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:56)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:167)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:137)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:126)
    at ru.test.mainClass.main(mainClass.java:23)

Что не так?

В документации (http://community.invisionpower.com/resources/documentation/index.html/_/developer-resources/miscellaneous-articles/xml-rpc-api-r246) sayed:

Вы должны отправлять вызовы XML-RPC в файл interface / board / index.php. Выдолжен посылать все параметры в виде структуры.

Каждый запрос должен предоставлять два параметра: api_key - это должен быть ключ, установленный ранее. api_module - это должно быть «ipb». Теоретически вы можете создавать другие модули, но«ipb» - это все, что поставляется с IP.Board.

Где я ошибаюсь.

А также как я могу получить файл method.php?

IНапишите URL http://hbf.by/interface/board/modules/ipb/methods.php

Но получите пустую страницу.

Но и в документации сказано:

Откройте интерфейс / board / modules / ipb / method.phpфайл, чтобы увидеть, какие параметры каждый метод ожидает получить и отправит обратно в ответ

Может быть какой-то сервер нуждается в конфигурациино в интернете я не могу его найти.

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Ваш код соответствует документации.

Но XMLRPC часто определяет модуль в вызове, как это

Object result = client.execute("ipb.fetchOnlineUsers", params);

Вы можете попробовать это.

0 голосов
/ 21 октября 2011

Я нашел, где проблема

не используйте Object [] params = new Object [] {"74600b5f2d157", "ipb", "','"};

вместо этого используйте

HashMap, а затем

Object result = client.execute ("ipb.fetchOnlineUsers", new Object [] {hMap});

Это работает правильно

...