2013-03-25 6 views
21

アンドロイドのHttpPostのコンテンツタイプを変更するにはどうすればよいですか?私はこのコードのビットだ/ x-www-form-urlencodedでそうAndroidセットコンテンツタイプHttpPost

アプリケーションにコンテンツタイプを設定する必要がある要求に対して

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とのNameValueのペアが含まれています。

+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

nameValuePairsは非推奨です。 MapまたはHashMapでスニペットを編集できますか? –

+0

良い点、私はあなたが@AnandSavjaniがそれに取り組んでいて、マップでそれを行うための更新された方法を見つけるなら、私はプロジェクトatmに取り組んでいません、応答を編集してください。 10x – msysmilu

+1

私はすべてのタイプのメソッドとcontent-typeをサポートするvolleyライブラリで私の問題を解決しました:) –

関連する問題