我有一个案例:通过论坛引擎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)中说:
您应该向interface / board / index.php文件提交XML-RPC调用。 您应该将所有参数作为结构发送。
每个请求必须提交两个参数:api_key - 这应该是 关键设置早些时候。 api_module - 这应该是“ipb”。 从理论上讲,你可以创建其他模块,但“ipb”就是这样 装有IP.Board。
我犯了错误。
还有我如何获得methods.php文件?
我写了网址http://hbf.by/interface/board/modules/ipb/methods.php
但得到空白页。
但也在文档中说:
打开interface / board / modules / ipb / methods.php文件以查看哪个 每个方法期望接收的参数,并将返回 响应
可能是某些服务器需要配置,但在互联网上我找不到它。
答案 0 :(得分:1)
您的代码似乎与文档相符。
但是,XMLRPC经常在这个调用中指定模块
Object result = client.execute("ipb.fetchOnlineUsers", params);
你可以试试。
答案 1 :(得分:0)
我找到了麻烦的地方
不要使用Object [] params = new Object [] {“74600b5f2d157”,“ipb”,“','”};
改为使用
HashMap然后
对象结果= client.execute(“ipb.fetchOnlineUsers”,新对象[] {hMap});
它正常工作