2011-09-09 29 views
5

Tôi đã tạo ứng dụng Android cho phép bạn đăng tên trên trang web mặc dù biểu mẫu gửi yêu cầu POST http đến trang web. Vấn đề là 90% khách hàng của tôi là người Thụy Điển và yêu cầu POST dường như cắt nhỏ mọi thứ sau một ký tự đặc biệt trong một chuỗi, bao gồm cả ký tự đặc biệt.Các ký tự đặc biệt biến mất trong yêu cầu POST từ điện thoại Android

Vì vậy, họ Thụy Điển "Börjesson", trở thành "B".

mã bưu điện yêu cầu của tôi:

public static String execRequest(String url, Map<String, String> params) 
{ 
    try { 
     DefaultHttpClient defaultHttpClient = new DefaultHttpClient(); 
     HttpPost httpPost = null; 
     HttpGet httpGet = null; 
     if(params == null || params.size() == 0) { 
      httpGet = new HttpGet(url); 
      httpGet.setHeader("Accept-Encoding", "UTF-8"); 
     } 
     else { 
      httpPost = new HttpPost(url); 
      httpPost.setHeader("Accept-Encoding", "UTF-8"); 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
      for(String key: params.keySet()) { 
       nameValuePairs.add(new BasicNameValuePair(key, params.get(key))); 
      } 
      httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     } 
     HttpResponse httpResponse = (HttpResponse)defaultHttpClient.execute(httpPost == null ? httpGet : httpPost); 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     if(null != httpEntity) { 
      InputStream inputStream = httpEntity.getContent(); 
      Header contentEncoding = httpResponse.getFirstHeader("Content-Encoding"); 
      if(contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("UTF-8")) { 
       inputStream = new GZIPInputStream(inputStream); 
      } 
      String responseString = convertStreamToString(inputStream); 
      inputStream.close(); 
       return responseString; 
     } 
    } 
    catch(Throwable t) { 
     t.printStackTrace(); 
    } 
    return null; 
} 

Vì vậy, bất cứ lời khuyên về những gì tôi đang làm sai?

Cảm ơn trước!

+1

bạn đã cố gắng 'httpPost.setEntity (UrlEncodedFormEntity mới (nameValuePairs), "utf-8"); ' – Selvin

+0

tôi không thể tìm thấy bất kỳ hàm có tham số mà ... – Mockarutan

+1

chết tiệt xấu của tôi không setEntity bat UrlEncodedXXX constructor 'httpPost.setEntity (new UrlEncodedFormEntity (nameValuePairs," utf-8 "));' – Selvin

Trả lời

6

Sử dụng httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "utf-8"));

+0

Đăng câu trả lời dưới dạng wiki cộng đồng. Làm ơn chấp nhận nó. – Yury

Các vấn đề liên quan