6

JavaのデフォルトのHttpURLConnectionクラスの使用で問題が発生したかどうかを知りたいだけです。ApacheCommonsに切り替える原因となったある種のバグ。

それとも、サードパーティのhttp libの誕生を正当化するのは、クラスが公開する(醜い)インターフェイスだけですか?

開示:java.netに深刻な問題があることに対するいくつかの議論を聞きましたが、Javaコアディストリビューションの一部であるクラスがJDKのいくつかのリリース後もまだ問題を抱えているとは信じがたいです。

4

3 に答える 3

4

私をApacheHttpClientに駆り立てるものは、

  1. バギーキープアライブサポート。
  2. クッキーの取り扱い。

ここでHttpClient4(Apache HTTPコンポーネント)を使用する必要があります。

編集:最初の問題はここで何度か議論されています。見る、

HttpURLConnection.getResponseCode()は、2回目の呼び出しで-1を返します

HttpURLConnection:応答全体を読み取らなければならないのはどういうことですか?

Androidでは問題が悪化しているように見えますが、J2SEでは正確な問題が発生しました。

于 2010-05-17T19:07:42.377 に答える
4

Android SDKには新しいコードにはHttpURLConnectionを優先すると書かれています。

Androidには2つのHTTPクライアントが含まれています:HttpURLConnectionApache HTTP Client。どちらもHTTPS、ストリーミングのアップロードとダウンロード、構成可能なタイムアウト、IPv6、接続プールをサポートしています。Apache HTTPクライアントには、Android 2.2(Froyo)以前のリリースのバグが少なくなっています。Android 2.3(Gingerbread)以降でHttpURLConnectionは、これが最良の選択です。シンプルなAPIと小さなサイズにより、Androidに最適です。透過的な圧縮と応答キャッシュにより、ネットワークの使用が削減され、速度が向上し、バッテリーが節約されます。2つのHTTPクライアントの比較については、 Android開発者ブログを参照してください。

于 2013-09-20T15:21:42.870 に答える
0

...しかし、Javaコアディストリビューションの一部であるクラスには、JDKのいくつかのリリース後もまだ問題があるとは信じがたいです。

太陽を守るために、彼らは岩と固い場所の間に挟まれています:

  • これらの問題を修正すれば、現在のAPIとその理想的とは言えない動作に依存する何万ものレガシーアプリケーションを間違いなく壊してしまうでしょう。もし彼らがそうするなら、彼らの有料の顧客ベースからのフォールアウトは莫大なものになるでしょう。そして、より多くの企業が古いJDKリリースを使用して立ち往生するでしょう。

  • 彼らが問題を解決しない場合、彼らはすべての問題が修正されるべきであると考える純粋主義者から無限のフレークを受け取り、互換性を酷評します。

少なくともHTTPクライアントAPIを必要とする人々は、より良い代替手段を持っています...彼らがそれを使用したいのであれば。


これが、@deprecatedが発明された理由です。

理論的には、はい...

ただし、実際には、非推奨は、コードを変更する 必要があるというプログラマー(さらに重要なことにマネージャー)への強力なシグナルとしてOracleによって使用されます。

ここではそれは保証されません。具体的な問題を見てみましょう。

  • HttpURLConnectionCookieを処理できません」は非推奨の理由ではありません。すでにアプリケーションを構築している人は、すでにHttpURLConnectionこの問題に対処しているでしょう。彼らにとっては、別のHTTPクライアントクラスに変更する必要はありません。

  • HttpURLConnectionキープアライブをサポートしていません」も非推奨の理由ではありません。ほとんどのアプリケーションはキープアライブを必要としません。

等々。

非推奨は鈍器であり、Sun / Oracleの哲学は、APIを安全に使用することが難しい場合にのみ使用する必要があるというものです。つまり、開発者がコードのやり直しなどに時間を費やす強力なビジネスケースがある場合です。

しかし、私の言葉だけを信じてはいけません。Sun/Oracleがメソッドとクラスを非推奨にした場合を見てください。歴史的な例外があっても、明確なパターンがあります。

于 2010-05-18T00:58:23.223 に答える