2011-10-20 45 views
0

的API模塊我有一個案例:通過API論壇引擎IP.Board進行論壇。XMLRPC IP.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的 。

我在哪裏犯錯。

而且我怎麼能得到methods.php文件?

我寫的URL http://hbf.by/interface/board/modules/ipb/methods.php

,但得到的空白頁。

而且在文檔Sayed的:

打開接口/板/模塊/ IPB/methods.php文件以查看哪些 參數每種方法預期接收和將在 響應發送回

可能是一些服務器需要配置,但在互聯網上我找不到它。

回答

1

您的代碼似乎與文檔匹配。

但是,XML-RPC往往指定模塊中調用這樣

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

你可以試試。

+0

不,這不會幫助我 我嘗試 對象result = client.execute( 「ipb.fetchOnlineUsers」,則params) ; 和對象結果= client.execute(「API_Server.fetchOnlineUsers」,params); –

+0

另外我創建文件的PHP,然後嘗試下一步:1.我更改網址到我的PHP文件2.在文件我寫所有POST和GET數據從請求到文本文件,但它是空的!爲什麼?客戶端發送數據到服務器? –

0

我發現其中是麻煩

不使用對象[] PARAMS =新對象[] { 「74600b5f2d157」, 「IPB」, 「 ''」};

改用

HashMap和然後

對象結果= client.execute(「IPB。fetchOnlineUsers」,新的對象[] {HMAP});

這是正常工作