2012-06-26 3 views
0

우리 회사 내부에 개인 미디어 위키 설치가 있습니다. 우리 소스 코드의 일일 빌드를 기반으로 wiki를 Perforce 레이블로 업데이트하여 사람들이 간소화 된 프로세스 레이블이 붙은 빌드를 사용할 수 있도록합니다. 우리는 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?)이 아닌 관련 정보를 공개하지 않았기 때문에 설치 문제를 진단하기가 어렵습니다. Stack Overflow는 질문 당 하나의 주제가있을 때 가장 잘 작동하기 때문에 질문의 해당 부분을 삭제했지만 [개정판] (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