2009-07-16 20 views
5

Używam MediaWiki API do aktualizacji niektórych stron za pomocą eksperymentalnego robota. Ten robot używa biblioteki klienta HTTP Apache do aktualizacji stron.Interfejs API MediaWiki i kodowanie

(...) 
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); 
(...) 

Jednak ciąg "zawartości" zawiera pewne akcenty. System.out.prinln(content) wygląda OK, ale zaakcentowane postacie na wiki wyglądają źle. Na przykład. "Val rie" zamiast "Valérie".

Jak mogę to naprawić?

Odpowiedz

3

OK, zmiana nagłówka żądania rozwiązała problem.

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

W moim kodzie PHP, aby porozmawiać z API Mediawiki użyłem urlencode do kodowania parametru tytułowego, a to wydaje się działać dobrze.

+0

Witam Roderica :-) Dzięki, ale nie sądzę, że to jest problem. Metody "addParameters" już konwertują dane podczas wysyłania zapytania POST. Może być rozwiązaniem tutaj: http://tinyurl.com/lyxv8c. Sprawdzę jutro. – Pierre

Powiązane problemy