Http方法在android studio中不推荐使用警告

时间:2015-08-04 05:23:26

标签: android android-studio deprecated androidhttpclient

我正在尝试使用参数创建一些http请求。目前我正在使用

 private List<NameValuePair> mParams = new ArrayList<NameValuePair>();
 private DefaultHttpClient mHttpClient;
 private HttpPost mHttpPost;

这些用于发出http请求,它工作正常。但问题是android studio正在显示所有人的弃用警告     这3个。我试过用 HttpClientBuilder.create().build();但android studio无法导入HttpClientBuilder的库   我尝试下载并添加this jar dependency,但仍无效。这是我的代码

        mHttpClient = new DefaultHttpClient();
        mHttpPost = new HttpPost(url);
        mParams.add(new BasicNameValuePair("key", value));
        mHttpPost.setEntity(new UrlEncodedFormEntity(mParams));

所有这些行都显示已弃用的警告,这是替代方法吗?

5 个答案:

答案 0 :(得分:5)

您可以使用HttpsURLConnection代替DefaultHttpClient。另外,NameValuePair已弃用,请使用Uri.BuilderappendQueryParameter发送请求参数。

尝试以下代码:

URL url = new URL("http://myurl.com");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setReadTimeout(10000);
connection.setConnectTimeout(15000);
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
Uri.Builder builder = new Uri.Builder()
       .appendQueryParameter("key1", valu1)
       .appendQueryParameter("key2", value2);
String query = builder.build().getEncodedQuery();
OutputStream os = connection.getOutputStream();
BufferedWriter writer = new BufferedWriter(
       new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
os.close();
connection.connect();

答案 1 :(得分:2)

不推荐使用DefaultHttpClient类,而是可以使用HttpUrlConnection类。 HttpUrlConnection hassimple API。可以在api 22中弃用NameValuePair类。您可以使用ContentValues(android.content.ContentValues)而不是NameValuePair。

ContentValues contentValues = new ContentValues();
        contentValues.put("Param_name1", Param_value1);
        contentValues.put("Param_name2", Param_value2);

我正在使用Okhttp客户端进行收听和发布呼叫。 http://square.github.io/okhttp/

我认为此链接会对您有所帮助 http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html

答案 2 :(得分:1)

from this link 您可以下载httpclient4.5的最新jar。并使用

HttpClient httpClient = HttpClientBuilder.create().build();

答案 3 :(得分:1)

自API HttpClient以来,

level 22已弃用。首选HttpURLConnection新代码。

Android包括两个HTTP客户端:HttpURLConnection和Apache HTTP Client。两者都支持HTTPS,流上传和下载,可配置的超时,IPv6和连接池。 Apache HTTP客户端在Android 2.2(Froyo)和早期版本中的错误较少。对于Android 2.3(Gingerbread)及更高版本,HttpURLConnection是最佳选择。其简单的API和小巧的尺寸使其非常适合Android。透明压缩和响应缓存可减少网络使用,提高速度并节省电池电量。有关两个HTTP客户端的比较,请参阅Android开发人员博客。

答案 4 :(得分:1)

IDE会在 new DefaultHttpClient 上提示警告,请将此类标记为已弃用 [在Api 22中弃用]

要解决此问题,请使用HttpClientBuilder

    HttpClient client = HttpClientBuilder.create().build();
    HttpGet request = new HttpGet("http://www.google.com");
    HttpResponse response = client.execute(request);
相关问题