2009-07-16 20 views
5

Sto usando il MediaWiki API per aggiornare alcune pagine con un robot sperimentale. Questo robot utilizza la libreria client Java Apache HTTP per aggiornare le pagine.MediaWiki API e codifica

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

Tuttavia la stringa 'contenuto' contiene alcuni accenti. System.out.prinln(content) sembra OK, ma i caratteri accentati nella wiki sembrano pessimi. Per esempio. 'Val rie' invece di 'Valérie'.

Come posso risolvere questo problema?

risposta

3

OK, la modifica dell'intestazione della richiesta ha risolto il problema.

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

Nel mio codice PHP per parlare con l'API Mediawiki ho utilizzato urlencode per codificare il parametro title e sembra funzionare correttamente.

+0

Ciao Roderic :-) Grazie ma, non penso che questo sia il problema. I metodi 'addParameters' converte già i dati quando invia la query POST. Può essere la soluzione è qui: http://tinyurl.com/lyxv8c. Controllerò domani. – Pierre