0

私はケースを持っています: フォーラム エンジン IP.Board の API によってフォーラムで動作します。

だから私は次のコードを書きました:

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) で次のように述べています。

XML-RPC 呼び出しを interface/board/index.php ファイルに送信する必要があります。すべてのパラメーターを構造体として送信する必要があります。

すべてのリクエストは 2 つのパラメータを送信する必要があります: api_key - これは以前に設定されたキーである必要があります。api_module - これは「ipb」である必要があります。理論的には、他のモジュールを作成することもできますが、IP.Board に同梱されるのは「ipb」だけです。

間違えるところ。

また、methods.php ファイルを取得するにはどうすればよいですか?

URL http://hbf.by/interface/board/modules/ipb/methods.phpを書きます

しかし、空白のページが表示されます。

しかし、ドキュメントでも次のように述べています。

interface/board/modules/ipb/methods.php ファイルを開いて、各メソッドが受け取ることを期待し、応答として送り返すパラメーターを確認します。

一部のサーバーには構成が必要な場合がありますが、インターネットでは見つかりません。

4

2 に答える 2

1

あなたのコードはドキュメントと一致しているようです。

しかし、XMLRPC はこのように呼び出しでモジュールを指定することがよくあります。

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

あなたはそれを試すことができます。

于 2011-10-20T10:30:48.747 に答える
0

どこに問題があるか見つけた

Object[] params = new Object[]{"74600b5f2d157", "ipb","','"}; を使用しないでください。

代わりに使用

HashMap その後

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

正常に動作しています

于 2011-10-21T10:59:11.510 に答える