我正在尝试使用参数创建一些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));
所有这些行都显示已弃用的警告,这是替代方法吗?
答案 0 :(得分:5)
您可以使用HttpsURLConnection
代替DefaultHttpClient
。另外,NameValuePair
已弃用,请使用Uri.Builder
和appendQueryParameter
发送请求参数。
尝试以下代码:
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)
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);