2009-07-16 4 views
5

실험 로봇으로 일부 페이지를 업데이트하려면 MediaWiki API을 사용하고 있습니다. 이 로봇은 Java Apache HTTP 클라이언트 라이브러리를 사용하여 페이지를 업데이트합니다.MediaWiki API 및 인코딩

(...) 
PostMethod postMethod = new PostMethod("http://mymediawikiinstallation/w/api.php"); 
postMethod.addParameter("action","edit"); 
postMethod.addParameter("title",page.replace(' ', '_')); 
postMethod.addParameter("summary","trying to fix this accent problem"); 
postMethod.addParameter("text",content); 
postMethod.addParameter("basetimestamp",basetimestamp); 
postMethod.addParameter("starttimestamp",starttimestamp); 
postMethod.addParameter("token",token); 
postMethod.addParameter("notminor",""); 
postMethod.addParameter("format","xml"); 
int status = httpClient.executeMethod(postMethod); 
(...) 

그러나 'content'문자열에는 몇 가지 액센트가 있습니다. System.out.prinln(content)는 괜찮아 보이지만 위키의 강조된 문자는 좋지 않습니다. 예 : 'Valérie'대신 'Val rie'.

어떻게 해결할 수 있습니까?

답변

3

확인을 요청 헤더를 변경하면 문제가 해결되었습니다.

postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); 
0

내 PHP 코드에서 MediaWiki API와 이야기하기 위해 나는 urlencode을 사용하여 title 매개 변수를 인코딩했습니다. 이것이 제대로 작동하는 것 같습니다.

+0

안녕하세요 로데릭 :-) 고맙지 만, 나는 이것이 문제라고 생각하지 않습니다. 'addParameters'메소드는 이미 POST 쿼리를 보낼 때 데이터를 변환합니다. 해결책은 여기에 있습니다 : http://tinyurl.com/lyxv8c. 내일 확인해 볼게. – Pierre