2013-03-25 14 views
21

Jak zmienić typ zawartości HttpPost w systemie Android?Typ zawartości zestawu Android HttpPost

Do wniosku trzeba ustawić typ zawartości na application/x-www-form-urlencoded

więc mam ten kawałek kodu:

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

Ale to nie zrobić i nie mogę znaleźć rozwiązania w dowolnym miejscu.

Cheers

Odpowiedz

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

Uwaga: budowniczy tylko zawiera adres URL i namevalue par.

+0

Już ustawiam inny nagłówek, ponieważ formularz jest również żądaniem uwierzytelnienia. Czy to nie przesłoni? – Gooey

+0

Masz wszystko działa, dzięki! (Nagłówek nie zostanie nadpisany). – Gooey

+0

zapisano dzień dziękuję bardzo –

7

nieaktualne: nameValuePairs

alternatywna: użyj volley library

kompletny kod na wezwanie, bo kto może go potrzebować.

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

nameValuePairs jest przestarzałe. Czy możesz edytować swój fragment za pomocą Map lub HashMap? –

+0

Dobra sprawa, nie pracuję nad projektem, jeśli ty, @AnandSavjani nad nim pracujesz i znajdziesz zaktualizowany sposób na zrobienie tego w Mapach, edytuj odpowiedź; 10x – msysmilu

+1

Rozwiązałem mój problem z biblioteką volley, która obsługuje wszystkie typy metod i typu zawartości :) –

Powiązane problemy