2012-06-26 47 views
0

我們在公司內部有私人MediaWiki安裝。根據我們的源代碼每日構建,我們使用Perforce標籤更新wiki,以便人們可以使用標記爲簡化流程的構建。我們嘗試使用MediaWiki::BotMediaWiki::API在Windows服務器上使用Perl腳本自動執行此操作。MediaWiki :: API中錯誤「無法解碼JSON」的原因是什麼?

use MediaWiki::Bot; 
use MediaWiki::API; 

my $mw = MediaWiki::API->new(); 
$mw->{config}->{api_url} = 'http://somewiki/w/index.php/title#feature_List'; 

# log in to the wiki 
$mw->login({ 
     lgname  => 'username', 
     lgpassword => 'password' 
      || die $mw->{error}->{code} . ': ' . $mw->{error}->{details}; 

      # get a list of articles in category 
      my $articles = $mw->list({ 
       action => 'query', 
       list => 'categorymembers', 
       cmtitle => 'Category:Perl', 
       cmlimit => 'max' 
      }) || die $mw->{error}->{code} . ': ' . $mw->{error}->{details}; 

      # and print the article titles 
      foreach (@{$articles}) { 
      print "$_->{title}\n"; 
     } 

輸出:

2: Failed to decode JSON returned by http://vaporwiki/w/index.php/Executor#Execu 
tor_Feature_List 
Decoding Error: 
malformed JSON string, neither array, object, number, string or atom, at charact 
er offset 0 (before "<!DOCTYPE html PUBLI...") at C:/Perl/lib/MediaWiki/API.pm l 
ine 398 

Returned Data: <whole page data> 
+0

很難診斷您的安裝問題,因爲您忽略了揭示任何相關信息,甚至不包括您的Perl發行版(ActiveState Perl?)。 - 由於堆棧溢出在每個問題只有一個主題時效果最好,所以我刪除了這部分問題,它仍然可以從[revisions](http://stackoverflow.com/posts/11217610/revisions)中獲得。複製此文本並[打開一個新文件](http://stackoverflow.com/questions/ask),以便正確處理它。 – daxim

回答

5

API URL是錯誤的。試試http://vaporwiki/w/api.php

+0

,但我們本地wiki中的鏈接看起來像 http://intranet/wiki/index.php/Main_Page – bicepjai

+2

這就是MediaWiki的用戶界面,但正如daxim所說,對於API訪問,您必須改用API地址。 – jpatokal

相關問題