首页
学习
活动
专区
圈层
工具
发布

Android HTTP API调用

Android HTTP API调用详解

一、基础概念

HTTP API调用是Android应用与服务器交互的核心方式,通过HTTP协议(如GET/POST/PUT/DELETE)请求远程接口获取或提交数据。关键组件包括:

  • URL:接口地址(如https://api.example.com/data
  • 请求方法:GET(获取)、POST(提交)、PUT(更新)、DELETE(删除)
  • 请求头(Headers):携带认证信息(如Authorization)、内容类型(如Content-Type: application/json
  • 请求体(Body):POST/PUT时传递的数据(如JSON格式)

二、实现方式与示例代码

1. 原生方式(HttpURLConnection)
代码语言:txt
复制
// GET请求示例
URL url = new URL("https://api.example.com/data");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Authorization", "Bearer token");

int responseCode = conn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String inputLine;
    StringBuilder response = new StringBuilder();
    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();
    Log.d("API_RESPONSE", response.toString());
}
conn.disconnect();
2. 第三方库(Retrofit + OkHttp)

优势:简化代码、支持异步、自动JSON解析。

代码语言:txt
复制
// 1. 定义API接口
interface ApiService {
    @GET("data")
    suspend fun getData(@Header("Authorization") token: String): Response<DataModel>
}

// 2. 创建Retrofit实例
val retrofit = Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .client(OkHttpClient.Builder().build())
    .build()

// 3. 发起请求(CoroutineScope中)
val api = retrofit.create(ApiService::class.java)
try {
    val response = api.getData("Bearer token")
    if (response.isSuccessful) {
        val data = response.body()
    }
} catch (e: Exception) {
    e.printStackTrace()
}

三、常见问题与解决方案

1. 网络权限缺失
  • 现象:请求失败,日志报错Permission denied
  • 解决:在AndroidManifest.xml添加:
  • 解决:在AndroidManifest.xml添加:
2. 主线程阻塞
  • 现象NetworkOnMainThreadException
  • 解决:使用异步方式(如CoroutineRxJava)或AsyncTask(已废弃)。
3. HTTPS证书问题
  • 现象SSLHandshakeException
  • 解决
    • 配置OkHttp信任所有证书(仅限调试):
    • 配置OkHttp信任所有证书(仅限调试):
4. 响应数据解析失败
  • 现象JsonSyntaxException或字段映射错误。
  • 解决
    • 确保模型类(如DataModel)字段与JSON键名一致。
    • 使用@SerializedName注解处理不一致字段:
    • 使用@SerializedName注解处理不一致字段:

四、最佳实践

  1. 封装网络层:统一处理错误、超时、重试逻辑。
  2. 使用拦截器
    • 日志拦截器:调试时打印请求/响应数据。
    • 认证拦截器:自动添加Authorization头。
    • 认证拦截器:自动添加Authorization头。
  • 缓存策略:通过Cache-Control头或OkHttp缓存减少重复请求。

五、应用场景

  • 用户认证:POST登录接口获取Token。
  • 数据同步:GET拉取最新列表,POST提交本地更改。
  • 文件上传:Multipart请求上传图片/视频。
  • 实时通信:WebSocket或长轮询(如聊天应用)。

通过合理选择工具和遵循最佳实践,可高效实现稳定可靠的API调用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券