2013-03-25 5 views
21

Как изменить тип содержимого HttpPost в андроиде?Android set content type HttpPost

Для запроса мне нужно задать тип контента для приложения/х-WWW-форм-urlencoded

Так что я получил этот кусок кода:

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

Но это не делать трюк, и я не могу найти решение где угодно.

Приветствия

ответ

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

Примечание: строитель содержит только URL-адрес и имя-значение пар.

+0

Я уже устанавливаю другой заголовок из-за того, что форма также является запросом на аутентификацию. Разве это не изменит это? – Gooey

+0

Получил все это, спасибо! (Заголовок не перезаписывается). – Gooey

+0

сохранен в день спасибо большое –

7

Устаревшее: nameValuePairs

Альтернатива: использование volley library

Полный код для вызова, для тех, кто может понадобиться.

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

имяValuePairs устарело. Можете ли вы отредактировать свой фрагмент с помощью карты или HashMap? –

+0

Хорошая точка, я не работаю над проектом atm, если вы, @AnandSavjani работаете над ним и находите обновленный способ сделать это с помощью Maps, отредактируйте ответ; 10x – msysmilu

+1

Я решил свою проблему с библиотекой volley, которая поддерживает все типы методов и контент-тип :) –