NameValuePair在API22过时问题

 在更高版本的编译环境中,如果使用NameValuePair的话会出现这样的提示:The type NameValuePair is deprecated,也就是说这个类以及过时了。

 既然过时了,那么有什么方法替换这个API呢?经查阅有一个方法比较合适:

 首先是如何拼接键值对。这里我们使用的是ContentValues

ContentValues content = new ContentValues();
		content.put("sign", "test");
		content.put("userId", "0");
		content.put("page",1 + "");
		content.put("size", "20");
		content.put("sort", "");
		content.put("types", "news");
 就这样的方法完全可以替换NameValuePair。那么说到这里也许就下一个疑问来了,怎么获取对应的键值对。要知道NameValuePair是有getName(),getValue()的人,而你ContentValues要怎么样去便利获取键值对呢??详细的可以看看以下代码

for (Map.Entry<String, Object> entry : content.valueSet()) {
<span style="white-space:pre">			</span>LogUtils.d("键:"+entry.getKey()+",值:"+entry.getValue().toString());
<span style="white-space:pre">		</span>}
通过一个for循环,遍历content中的值,转化为Map.Entry<T,T>类型,就能通过getKey()和getValue()获取对应的键值对了。

### NameValuePair 的使用方法 `NameValuePair` 是 `org.apache.http.NameValuePair` 接口的一部分,在构建 HTTP 请求参数时非常有用。此接口允许创建键值对来表示 URL 参数或者表单数据。 对于 Apache HttpClient 4.x 版本,可以利用 `List<NameValuePair>` 来设置 POST 或者 GET 请求中的参数: ```java import org.apache.http.HttpEntity; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; // 创建 HttpClient 实例 CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("http://example.com/api"); // 设置请求头(可选) httpPost.setHeader("User-Agent", "Mozilla/5.0"); // 构建参数列表 List<NameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("param1", "value1")); params.add(new BasicNameValuePair("param2", "value2")); try { // 将参数编码并附加到请求体中 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, Consts.UTF_8); httpPost.setEntity(entity); CloseableHttpResponse response = httpClient.execute(httpPost); try { int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_OK) { HttpEntity resEntity = response.getEntity(); String responseBody = EntityUtils.toString(resEntity); System.out.println(responseBody); } } finally { response.close(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } ``` 上述代码展示了如何通过 `BasicNameValuePair` 类实例化多个名称-值对,并将其添加至 `ArrayList<NameValuePair>` 中[^1]。接着这些参数被封装成实体并通过 `UrlEncodedFormEntity` 编码后附加上去作为 POST 请求的内容主体部分[^3]。 需要注意的是,随着版本更新,某些类可能已被弃用或移除;因此建议查阅官方文档获取最新信息以及最佳实践指导。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值