2013-03-25 17 views
21

Come è possibile modificare il tipo di contenuto di un HttpPost in Android?Android set tipo di contenuto HttpPost

Per una richiesta ho bisogno di impostare il tipo di contenuto a application/x-www-form-urlencoded

Così ho preso questo pezzo di codice:

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

Ma questo non fa il trucco e non riesco a trovare la soluzione da nessuna parte.

Acclamazioni

risposta

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

Nota: il costruttore contiene solo url e NameValue coppie.

+0

Sto già impostando un'altra intestazione, poiché il modulo è anche una richiesta di autenticazione. Non lo scavalcherebbe? – Gooey

+0

Funziona tutto, grazie! (L'intestazione non viene sovrascritta). – Gooey

+0

salvato la giornata grazie mille –

7

Deprecated: nameValuePairs

alternativa: utilizzare volley library

Il codice completo per la chiamata, per chi potrebbe averne bisogno.

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 è obsoleto. Puoi modificare il tuo snippet con Map o HashMap? –

+0

buon punto, non sto lavorando al progetto atm, se tu, @AnandSavjani ci stai lavorando e trovi un modo aggiornato di farlo con Maps, ti preghiamo di modificare la risposta; 10x – msysmilu

+1

Ho risolto il mio problema con la libreria di volley che supporta tutti i tipi di metodi e tipo di contenuto :) –

Problemi correlati