2009-07-16 3 views
5

Я использую MediaWiki API для обновления некоторых страниц экспериментальным роботом. Этот робот использует HTTP-клиент Java Apache для обновления страниц.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-коде, чтобы поговорить с API-интерфейсом Mediawiki, я использовал urlencode для кодирования параметра заголовка, и это, похоже, работает нормально.

+0

Hi Roderic :-) Спасибо, но я не думаю, что это проблема. Методы 'addParameters' уже преобразуют данные при отправке запроса POST. Может быть, решение находится здесь: http://tinyurl.com/lyxv8c. Я проверю завтра. – Pierre

Смежные вопросы