3

Androidに付属のHttpComponentsライブラリを使用していました。GETとPOSTを使用してパラメーターを送信し、サーバーからInputStreamまたはStringを受信するために、2つのクラスを作成しました。すべてが正常に機能していました。スレッドでのすべてのダウンロード、開始、一時停止、再開...しかし、今日、2つのダウンロードを同時に開始しましたが、いずれも終了していません。

私は解決策をグーグルで検索し、AndroidにはHttpCore4.0-beta2が付属していることを確認しました。はい、とても古いです。2008年7月1日にリリースされ、Androidはそれ以降更新していません...

クラスを書き直しましたが、現在HttpURLConnectionを使用しており、2つのファイルを同時にダウンロードできます。

OK、AndroidでHttpComponentsの使用を検討している場合は、警告でした。今私の質問。新しいバージョン4.1をプロジェクトにインポートしたいと思います。ビルドされたパスにjarを追加しましたが、新しい(4.1)パッケージと古い(beta2、4.0)パッケージが同じである場合、これらのjarをどのように使用できますか?

ありがとう。

解決済みThreadSafeClientConnManager
を使用してDefaultHttpCLinetを作成する必要があります。

HttpParams parameters = new BasicHttpParams ();
HttpProtocolParams.setVersion (parameters, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset (parameters, HTTP.UTF_8);
HttpProtocolParams.setUseExpectContinue (parameters, false);
ConnManagerParams.setMaxTotalConnections (parameters, MAX_CONNECTIONS);

SchemeRegistry schReg = new SchemeRegistry ();
schReg.register (new Scheme ("http", PlainSocketFactory.getSocketFactory (), 80));

client = new DefaultHttpClient (new ThreadSafeClientConnManager (parameters, schReg), parameters);

更新:AndroidHttpClientを使用することもできます。このクラスでは、ThreadSafeClientConnManagerを使用する必要はありません。

AndroidHttpClient client = AndroidHttpClient.newInstance ("Android");

より詳しい情報

4

1 に答える 1

3

しかし、今日、私は2つのダウンロードを同時に開始しましたが、いずれも終了しませんでした。

HttpClientはデフォルトではスレッドセーフではないためです。そのためにを接続する必要がありThreadSafeClientConnManagerます。これについては、HttpClientのドキュメントで説明されています。

私は解決策をグーグルで検索し、AndroidにはHttpCore4.0-beta2が付属していることを確認しました。はい、とても古いです。それは2008年7月1日にリリースされ、Androidはそれ以来それを更新していません...そしてそれはバグがあります

https://android.googlesource.com/platform/external/apache-http

「2008年7月1日」以降、かなりの数のコミットがあることに注意してください。

クラスを書き直しましたが、現在HttpURLConnectionを使用しており、2つのファイルを同時にダウンロードできます。

ほとんどのプログラマーは、HttpClientでもこれを行うことができます。

新しい(4.1)パッケージと古い(beta2、4.0)パッケージが同じである場合、これらのjarをどのように使用できますか?

できません。

于 2011-03-01T12:24:13.937 に答える