2009-07-16 27 views
5

Tôi đang sử dụng MediaWiki API để cập nhật một số trang bằng rô bốt thử nghiệm. Robot này sử dụng thư viện Java Apache HTTP-client để cập nhật các trang.API và mã hóa MediaWiki

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

Tuy nhiên, chuỗi 'nội dung' chứa một số dấu trọng âm. System.out.prinln(content) trông OK, nhưng các ký tự nổi bật trong wiki trông xấu. Ví dụ. 'Val rie' thay vì 'Valérie'.

Làm cách nào để khắc phục sự cố này?

Trả lời

3

OK, thay đổi tiêu đề yêu cầu đã khắc phục được sự cố.

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

Trong mã PHP của tôi để nói chuyện với API Mediawiki, tôi đã sử dụng urlencode để mã hóa thông số tiêu đề và điều này có vẻ hoạt động tốt.

+0

Hi Roderic :-) Cảm ơn nhưng, tôi không nghĩ đây là vấn đề. Các phương thức 'addParameters' đã chuyển đổi dữ liệu khi nó gửi truy vấn POST. Có thể là giải pháp ở đây: http://tinyurl.com/lyxv8c. Tôi sẽ kiểm tra vào ngày mai. – Pierre