2013-07-17 76 views
2

我試圖使用gwtwiki Java庫與私有wiki(Mint Linux上的MediaWiki 1.19.5)進行交互,而且我很難創建新的wiki頁面。使用gtwtwiki創建MediaWiki頁面

維基運行正常,我可以連接並編輯已有的頁面罰款,但創建失敗,出現錯誤:

info.bliki.api.UnexpectedAnswerException: The specified page was not found 

我的代碼:

Connector connection = new Connector(); 

User user = new User("username", "password", "http://xxxx/mediawiki/api.php"); 

connection.login(user); 

StringBuilder page = new StringBuilder(); 

page.append("== Test page ==\r\n"); 
page.append("Some page text"); 

String title = Encoder.encodeTitleToUrl("Test page", true); 

Edit newPage = Edit.create() 
        .title(title) 
        .text(page.toString()); 

try { 
    connection.edit(user, newPage); 
} catch (UnexpectedAnswerException e) { 
    e.printStackTrace(); 
} 

看來,問題出在庫,因爲它執行query(在edit命令發出之前返回空pageid。該行位於Connector.javaedit(....)方法中:

if (pages != null && pages.size() == 1 && pages.get(0).getPageid() != null) { 
... 

使用調試器強制它傳遞null pageid檢查允許我的頁面創建成功。

那麼,我做錯了什麼? gwtwiki是否支持頁面創建?如果是這樣,我該怎麼做?

回答

1

作爲一種解決方法,而不是完整的答案,我將Connector類分類爲允許我重寫edit方法以除去導致問題的pageId null檢查。

我還沒有完全測試過,所以可能會有其他的影響,但是目前爲止我已經解決了這個問題。如果我發現更好,更一般的方法,將會更新。