Android 5.1のリリースでは、すべてのApache httpが非推奨になったように見えます。ドキュメントを見るのは無意味です。
This class was deprecated in API level 22. Please use openConnection() instead. Please visit this webpage for further details.
初めて読むときはこれで問題ありませんが、廃止されたすべてのクラスがそれを言っているとき、それはそれほど役に立ちません。
とにかく、HttpEntity
、特にStringEntity
、およびMultipartEntity
?などのクラスの代替は何ですか?私はBasicNameValuePair
を自分のものに置き換えましたAndroidのPair<T, S>
クラス、およびURLEncoder.encode
はURLEncodedUtils
の適切な代替物ですが、HttpEntity
について何をすべきかわかりません。
[〜#〜] edit [〜#〜]
私はネットワーク関連のものを書き直すことにしました。 RetrofitとOkHttpを使用してみる
[〜#〜] edit [〜#〜]
真剣にあなたの電話とスタッフをレトロフィットに切り替えることを見てください。かなり気の利いた。できてうれしいです。いくつかのハードルがありましたが、それはクールです。
常に最後の Apache Http クライアントをインポートして使用できます。また、代わりに使用できる場合に備えて、 Volley または Retrofit のようなネットワークライブラリを確認することもできます。新しいプロジェクトを開始する場合は、車輪を再発明する必要がないため、ネットワークライブラリの使用をお勧めします。ただし、HttpClient
の使用にこだわる場合は、先に進んでください。
編集:Apache HttpClientの最新ニュース(2015年11月7日現在)
Google Android 1.0は、Apache HttpClientのベータ前のスナップショットとともにリリースされました。最初のAndroidリリースに合わせて、Apache HttpClient 4.0 APIを早めに凍結する必要がありましたが、多くのインターフェイスと内部構造はまだ完全には機能していませんでした。 Apache HttpClient 4.0が成熟するにつれて、プロジェクトはGoogleが最新のコード改善をコードツリーに組み込むことを期待していました。残念ながらそれは起こりませんでした。 Androidに同梱されているApache HttpClientのバージョンは、事実上フォークになりました。最終的にGoogleは、互換性の問題をそのような決定の理由として挙げて、Apache HttpClientのストックバージョンへのアップグレードを拒否しながら、フォークのさらなる開発を中止することを決定しました。その結果、AndroidでApache HttpClient APIの使用を継続したいAndroid開発者は、新しい機能、パフォーマンスの向上、およびバグ修正を利用できません。 Android用のApache HttpClient 4.3ポートは、Google Androidと互換性のある公式リリースを提供することで状況を改善することを目的としていました。 Android API 23の時点で、GoogleのHttpClientのフォークが削除されたことを考えると、このプロジェクトは中止されました。
ただし、Apache HttpClient v4.3の公式のAndroidポートがあります
Android API 22以前はApache HttpClient v4.3を使用する必要があります
dependencies {
compile group: 'org.Apache.httpcomponents' , name: 'httpclient-Android' , version: '4.3.5.1'
}
Android API 23以降はAndroidにApache HttpClientパッケージを使用する必要があります Marek Seberaにより管理
dependencies {
compile group: 'cz.msebera.Android' , name: 'httpclient', version: '4.4.1.1'
}
Apache.org から取得した情報
HttpClient のドキュメントは正しい方向を示しています。
_org.Apache.http.client.HttpClient
_:
このインターフェイスはAPIレベル22で廃止されました。代わりにopenConnection()を使用してください。詳細については、このWebページをご覧ください。
Java.net.URL.openConnection()
に切り替える必要があることを意味します。
方法は次のとおりです。
_Java.net.URL url = new Java.net.URL("http://some-server");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
// read the response
System.out.println("Response Code: " + conn.getResponseCode());
InputStream in = new BufferedInputStream(conn.getInputStream());
String response = org.Apache.commons.io.IOUtils.toString(in, "UTF-8");
System.out.println(response);
_
Webサービスhttpclientをhttpurlconnectionに置き換えて呼び出します
ここに私のコード
public static String getDataFromUrl(String url) {
String result = null;
// System.out.println("URL comes in jsonparser class is: " + url);
try {
URL myurl=new URL(url);
HttpURLConnection urlConnection = (HttpURLConnection) myurl
.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoInput(true);
urlConnection.connect();
InputStream is=urlConnection.getInputStream();
if (is != null) {
StringBuilder sb = new StringBuilder();
String line;
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
} finally {
is.close();
}
result = sb.toString();
}
}catch (Exception e){
result=null;
}
return result;
}