Android HttpClient类
封面图
•
2025-10-26
•
Android开发
224
0
0
0
在 Android 开发中,`HttpClient` 是一个用于发送 HTTP 请求的类。不过需要注意的是,从 **Android 5.0(API 21)** 开始,`org.apache.http` 包中的 `HttpClient` 类已经被 **弃用(deprecated)**,推荐使用 `HttpURLConnection` 或者第三方库如 **OkHttp**、**Retrofit** 等来替代。 --- ## 一、Apache HttpClient(已弃用) ### 1. 导入包 ```java import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; ``` ### 2. 示例代码(同步请求) ```java HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet("https://example.com"); try { HttpResponse response = httpClient.execute(httpGet); int statusCode = response.getStatusLine().getStatusCode(); // 处理响应... } catch (IOException e) { e.printStackTrace(); } ``` > ⚠️ 注意:由于 `HttpClient` 在 Android 5.0 及以上版本中被弃用,不建议在新项目中使用。 --- ## 二、推荐方式:HttpURLConnection ### 1. 示例代码(同步请求) ```java try { URL url = new URL("https://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { InputStream inputStream = connection.getInputStream(); // 读取输入流... } } catch (IOException e) { e.printStackTrace(); } ``` ### 2. 异步请求(推荐使用 AsyncTask 或协程/线程池) > Android 不允许在主线程中进行网络请求,必须使用异步方式。 --- ## 三、推荐第三方库:OkHttp ### 1. 添加依赖(Gradle) ```gradle implementation 'com.squareup.okhttp3:okhttp:4.12.0' ``` ### 2. 示例代码(同步/异步) #### 同步请求: ```java OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://example.com") .build(); try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { String responseBody = response.body().string(); // 处理响应... } } catch (IOException e) { e.printStackTrace(); } ``` #### 异步请求: ```java OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://example.com") .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { String responseBody = response.body().string(); // 处理响应... } } }); ``` --- ## 四、总结 | 方法 | 是否推荐 | 说明 | |------|----------|------| | `HttpClient`(Apache) | ❌ 不推荐 | 已弃用,仅用于旧项目 | | `HttpURLConnection` | ✅ 推荐 | Android 原生支持,简单易用 | | `OkHttp` | ✅ 强烈推荐 | 功能强大,性能好,社区活跃 | | `Retrofit` | ✅ 推荐 | 基于 OkHttp 的封装,适合 RESTful API | --- 如果你正在开发新的 Android 应用,建议优先使用 **OkHttp** 或 **Retrofit** 来处理 HTTP 请求。需要我提供具体的 OkHttp 或 Retrofit 使用示例吗?
上一篇:
怎么在Android studio清除缓存
下一篇:
Android控件--ProgressBar
标题录入,一次不能超过6条
留言
评论