智用指南
第二套高阶模板 · 更大气的阅读体验

Android网络编程接口开发实战技巧

发布时间:2025-12-14 04:49:58 阅读:290 次

做Android开发,绕不开网络请求。不管是加载一张图片,还是提交用户登录信息,背后都是网络编程接口在跑。很多人一开始觉得难,其实摸清套路后,写起来挺顺手。

从最简单的HTTP请求开始

现在大多数App都用RESTful API和服务器通信。比如你做个天气App,要从后台拿城市气温数据,基本就是一个GET请求的事。用OkHttp这类库,几行代码就能搞定。

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
        .url("https://api.example.com/weather?city=shanghai")
        .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 responseData = response.body().string();
            // 在这里处理返回的数据
        }
    }
});

注意,网络操作不能在主线程执行,不然会ANR。上面用了enqueue异步调用,响应结果回到主线程更新UI时,记得用Handler或者runOnUiThread。

用Gson简化数据解析

服务器返回的大多是JSON,手动解析容易出错又啰嗦。配合Gson,可以直接把JSON映射成Java对象。比如天气接口返回:

{
  "city": "上海",
  "temperature": 22,
  "status": "晴"
}

定义一个类:

public class Weather {
    String city;
    int temperature;
    String status;
}

然后在回调里加一句:

Gson gson = new Gson();
Weather weather = gson.fromJson(responseData, Weather.class);

数据立马就能用,省事不少。

上传文件也常见

比如用户要传头像,就得用POST带文件。OkHttp支持Multipart请求,构造起来也不复杂。

RequestBody requestBody = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("file", "avatar.jpg",
                RequestBody.create(MediaType.parse("image/jpeg"), file))
        .addFormDataPart("userId", "12345")
        .build();

Request request = new Request.Builder()
        .url("https://api.example.com/upload")
        .post(requestBody)
        .build();

进度监听稍微麻烦点,得自己包装RequestBody,但网上有现成的工具类,抄过来改改就行。

别忘了权限和安全

AndroidManifest.xml里加上网络权限是基本操作:

<uses-permission android:name="android.permission.INTERNET" />

如果用HTTPS,确保服务器证书合规。测试阶段用自签名证书容易出问题,可以临时信任,但上线前一定要换回来。

封装一套自己的工具类

项目一大会有很多接口,每个都写一遍OkHttp太累。抽个NetworkClient类,把公共Header、超时时间、错误重试这些统一处理,后期维护轻松很多。比如加个token自动附加:

.addInterceptor(chain -> {
    Request original = chain.request();
    Request request = original.newBuilder()
            .header("Authorization", "Bearer " + getToken())
            .method(original.method(), original.body())
            .build();
    return chain.proceed(request);
})

这种小设计,时间越长越能体会到好处。