2013-03-25 45 views
21

Làm cách nào bạn có thể thay đổi loại nội dung của HttpPost trong android?Loại nội dung thiết lập Android HttpPost

Đối với yêu cầu tôi cần phải thiết lập các kiểu nội dung để application/x-www-form-urlencoded

Vì vậy, tôi đã nhận chút mã này:

httpclient=new DefaultHttpClient(); 
httppost= new HttpPost(url); 
StringEntity se = new StringEntity(""); 
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded")); 
httppost.setEntity(se); 

Nhưng điều đó không làm lừa và tôi không thể tìm thấy giải pháp bất cứ nơi nào.

Cheers

Trả lời

41
  HttpPost httppost = new HttpPost(builder.getUrl()); 
      httppost.setHeader(HTTP.CONTENT_TYPE, 
        "application/x-www-form-urlencoded;charset=UTF-8"); 
      // Add your data 
      httppost.setEntity(new UrlEncodedFormEntity(builder 
        .getNameValuePairs(), "UTF-8")); 

      // Execute HTTP Post Request 
      HttpResponse response = httpclient.execute(httppost); 

Lưu ý: những người xây dựng chỉ chứa url và namevalue cặp.

+0

Tôi đã đặt tiêu đề khác, do thực tế biểu mẫu cũng là yêu cầu xác thực. Nó sẽ không ghi đè điều đó? – Gooey

+0

Có tất cả hoạt động, cảm ơn! (Tiêu đề không bị ghi đè). – Gooey

+0

lưu ngày nhờ rất nhiều –

7

Deprecated: nameValuePairs

Alternative: sử dụng volley library

Mã hoàn chỉnh cho các cuộc gọi, cho bất cứ ai có thể cần nó.

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("grant_type", "password")); 
    nameValuePairs.add(new BasicNameValuePair("username", "user1")); 
    nameValuePairs.add(new BasicNameValuePair("password", "password1")); 

    HttpClient httpclient=new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("www.yourUrl.com"); 
    httppost.setHeader(HTTP.CONTENT_TYPE,"application/x-www-form-urlencoded;charset=UTF-8"); 

    try { 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 

    // Execute HTTP Post Request 
    try { 
     HttpResponse response = httpclient.execute(httppost); 
     Log.d("Response:" , response.toString()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
+1

tênValuePairs không được chấp nhận. Bạn có thể chỉnh sửa đoạn mã của mình bằng Bản đồ hoặc HashMap không? –

+0

điểm tốt, tôi không làm việc trên dự án atm, nếu bạn, @AnandSavjani đang làm việc trên đó và tìm cách cập nhật để làm điều đó với Maps, vui lòng chỉnh sửa phản hồi; 10x – msysmilu

+1

Tôi đã giải quyết được vấn đề của mình với thư viện volley hỗ trợ tất cả các loại phương thức và loại nội dung :) –

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