2010-11-22 5 views
0

Androidで大きなポスパラメータ(他のポストパラメータのうち)を送信するにはどうすればよいですか?Androidで大きなポストパラメータを送信する

私は現在org.apache.http.client.methods.HttpPostとポストパラメータを送信するBasicNameValuePairのリストを使用しています。

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost(someURL); 
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("param1", "value1")); 
nameValuePairs.add(new BasicNameValuePair("param2", hugeValue)); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
httpclient.execute(httppost); 

hugeValue私はInputStreamから読み取られ、私はそれを読んで送りたい非常に長い文字列です。これどうやってするの?

+2

おそらく、特に小さい携帯電話で、このルートを行くのRAMが不足します。 'java.net'パッケージの下位レベルの' HttpUrlConnection'を使う必要があるかもしれません。 – CommonsWare

+0

それはまさに問題です。私はRAMが不足しています。 – hpique

+0

サーバー側を制御する場合は、文字列をストリームに書き込んで、gzip(java.util.zip)してバイナリとしてアップロードできます。 apache.mimeやcommons.ioのようないくつかの外部ライブラリが役に立ちます。 –

答えて

5

CommonsWareが正しいです。 HttpUrlConnectionと出力ストリームへの直接書き込みは、メモリの問題を解決します。私は10MB以上の画像データをアップロードするために自分のアプリケーションで使ってきました。

良い例ポスト要求のあなたの種類をに従ってがある:http://www.java.happycodings.com/Other/code21.html

関連する問題