import org.apache.http.xxxxxx 爆红,包不存在之解决办法

问题如下:
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

 

原因:

 

因为 项目中用到了org.apache   的网络请求库。

在android 6.0以后,Google 删除了大部分  org.apache  的大部分 库。。导致在6.0编译不通过

可以通过上面的方法,把 sdk 编译版本 改为 5.0 。即可解决问题。

 

解决办法:

第一步:build.gradle中 
在buildToolsVersion下边 

defaultConfig上边

添加一行useLibrary 'org.apache.http.legacy'

第二步:

这时你的项目可能还是报错,但是出现了这么一句话

修改了Gradle而没有同步,点击Sync Now,同步配置

大功告成

 

<think>好的,我需要帮助用户了解如何使用ApacheHttpClient库发送HTTPPOST请求并处理响应。用户已经提供了一些相关的引用内容,我需要参考这些信息来构建回答。首先,用户的需求是发送POST请求和处理响应。根据引用[3],提到post通过setEntity直接提交请求参数。引用[2]中的代码示例里有HttpPost类和UrlEncodedFormEntity的使用,这应该是关键部分。引用[4]提到了Maven依赖,需要在示例代码前加入这部分内容,确保用户能够正确引入库。接下来,我需要组织步骤。通常步骤是创建HttpClient实例,构建POST请求,设置参数,执行请求,处理响应。根据引用[2]中的代码,使用CloseableHttpClient和HttpPost是正确的。参数设置部分,使用NameValuePair和UrlEncodedFormEntity,如引用[3]所述。处理响应时,引用[1]提到使用getEntity()方法获取响应内容,并用EntityUtils.toString转换。需要注意代码的完整性和正确性,比如关闭资源(response和client),异常处理也应该含在示例中。用户可能需要知道如何发送JSON数据,所以在示例中可以加入使用StringEntity发送JSON的部分,如引用[2]中的StringEntity和ContentType.APPLICATION_JSON。还要考虑常见问题,比如设置请求头,处理同的响应类型,以及资源释放的重要性。最后,生成相关问题,帮助用户深入理解,比如参数编码、异常处理、文件上传等,这些问题可以基于引用内容和常见用例来设计。</think>以下是使用Apache HttpClient发送HTTP POST请求并处理响应的详细步骤及示例代码: ### 一、发送POST请求步骤 1. **创建HttpClient对象** 2. **构建HttpPost请求对象** 3. **设置请求参数**(表单参数/JSON) 4. **执行请求获取响应** 5. **解析响应内容** 6. **释放资源** ### 二、示例代码(带注释) ```java import org.apache.http.NameValuePair; 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; import java.util.ArrayList; import java.util.List; public class HttpClientPostExample { public static void main(String[] args) { // 1. 创建HttpClient对象 try (CloseableHttpClient httpClient = HttpClients.createDefault()) { // 2. 创建POST请求对象 HttpPost httpPost = new HttpPost("https://api.example.com/login"); // 3. 设置表单参数 List<NameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("username", "testuser")); params.add(new BasicNameValuePair("password", "123456")); httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); // 4. 发送请求并获取响应 try (CloseableHttpResponse response = httpClient.execute(httpPost)) { // 5. 处理响应 String responseBody = EntityUtils.toString(response.getEntity()); System.out.println("响应状态:" + response.getStatusLine()); System.out.println("响应内容:" + responseBody); } } catch (Exception e) { e.printStackTrace(); } } } ``` ### 三、发送JSON数据示例 ```java // 设置JSON请求体 String json = "{\"name\":\"John\", \"age\":30}"; StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); httpPost.setEntity(entity); ``` ### 四、关键API说明 1. `UrlEncodedFormEntity`:用于封装表单参数[^3] 2. `EntityUtils.toString()`:将响应实体转换为字符串[^1] 3. `ContentType.APPLICATION_JSON`:指定JSON内容类型[^2] ### 五、最佳实践建议 1. 使用try-with-resources确保自动关闭资源 2. 设置超时时间:`httpClientBuilder.setConnectionTimeToLive()` 3. 添加公共请求头: ```java httpPost.addHeader("User-Agent", "Mozilla/5.0"); httpPost.addHeader("Authorization", "Bearer token"); ```
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值