安卓系统中如何使用网络请求库

本文介绍如何在Android应用中实现GET和POST网络请求,包括配置权限、添加依赖库及使用OkHttp进行同步与异步请求的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


56.04

注意事项

网络请求不能放到主线程中,要启动一个子线程运行

在清单文件中,赋予app网络权限

在包名下面加上这段内容

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

在module的gradle文件添加依赖

implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.20'

操作方法如下图

GET 构建网络请求(同步写法)

private final OkHttpClient client = new OkHttpClient(); //新建一个okhttp的客户端

void OkHttpDemo(){
        Request request = new Request.Builder().url("https://reqres.in/api/users?page=2").build(); //构建一个request请求

        new Thread(new Runnable() { // 启动一个子线程
            @Override
            public void run() {
                try {
                    Response response = client.newCall(request).execute(); // 发送requet 请求
                    Log.d(TAG, "OkHttpDemo: "+ response.body().string()); // 得到响应信息

                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }).start();


    }

GET 构建网络请求(推荐异步写法)

private final OkHttpClient client = new OkHttpClient(); //新建一个okhttp的客户端
void OkHttpAsync(){
       Request request = new Request.Builder().url("https://reqres.in/api/users?page=2").build(); //构建一个request请求
       client.newCall(request).enqueue(new Callback() {
           @Override
           public void onFailure(@NotNull Call call, @NotNull IOException e) {
               // 请求失败走这里
               Log.d(TAG, "onFailure: 请求失败");
           }

           @Override
           public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
               // 请求成功走这里
               Log.d(TAG, "onResponse: "+ response.body().string());
           }
       });
   }

GET URL参数构建

void okHttpBuilder(){
        // 构建url
        HttpUrl.Builder builder = HttpUrl.parse("https://reqres.in/api/users").newBuilder();
        builder.addQueryParameter("page","2");
        String url = builder.build().toString();
        Log.d(TAG, "okHttpBuilder: " + url);
    }

POST 请求

请求目标示例

url :https://reqres.in/api/users
要发送的数据
{
"name": "morpheus",
"job": "leader"
}

构建请求demo

private final OkHttpClient client = new OkHttpClient(); //新建一个okhttp的客户端
void okHttpPost(){
        RequestBody body = new FormBody.Builder()
                .add("name","morpheus")
                .add("job","leader")
                .build();
        Request request = new Request.Builder().url("https://reqres.in/api/users").post(body).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(@NotNull Call call, @NotNull IOException e) {
                Log.d(TAG, "onFailure: 请求失败");
            }

            @Override
            public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
                Log.d(TAG, "onResponse: "+ response.body().string());

            }
        });
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

干瘪的兔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值