【OkHttp】OkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )(一)

简介: 【OkHttp】OkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )(一)

文章目录

OkHttp 系列文章目录

前言

一、OkHttp 异步 Get 请求

二、OkHttp 同步 Get 请求

三、OkHttp 同步 Post 请求

四、OkHttp 异步 Post 请求

五、完整源代码示例

六、博客资源

前言

在上一篇博客 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 ) 中简要介绍了 OkHttp 导入 , 以及同步 Get 请求 ;






一、OkHttp 异步 Get 请求


首先 , 创建 Request 请求对象 ;


     

// Request 中封装了请求相关信息
        Request request = new Request.Builder()
                .url("https://www.baidu.com")   // 设置请求地址
                .get()                          // 使用 Get 方法
                .build();


然后 , 创建异步回调事件 , 即请求完毕后的回调事件 ;


   

// 创建异步回调
        Callback callback = new Callback(){
            @Override
            public void onFailure(Call call, IOException e) {
                // 请求失败的情况
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                // 请求成功 , 获取
                String result = response.body().string();
                Log.i(TAG, "result : " + result);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // 主线程中执行相关代码
                    }
                });
            }
        };


最后 , 调用 enqueue 方法 , 进行异步 Get 请求操作 ;


   

// 异步 Get 请求
        mOkHttpClient.newCall(request).enqueue(callback);



完整代码如下 :


 

/**
     * OkHttp 异步 Get 请求
     */
    private void httpAsynchronousGet() {
        // Request 中封装了请求相关信息
        Request request = new Request.Builder()
                .url("https://www.baidu.com")   // 设置请求地址
                .get()                          // 使用 Get 方法
                .build();
        // 异步 Get 请求
        mOkHttpClient.newCall(request).enqueue(new Callback(){
            @Override
            public void onFailure(Call call, IOException e) {
                // 请求失败的情况
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                // 请求成功 , 获取
                String result = response.body().string();
                Log.i(TAG, "result : " + result);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // 主线程中执行相关代码
                    }
                });
            }
        });
    }







二、OkHttp 同步 Get 请求


参考 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 ) 三、OkHttp 同步 Get 请求 博客章节 ;



代码示例 : 先初始化 Request 对象 , 然后调用 mOkHttpClient.newCall(request).execute() 进行同步 Get 请求 , 注意同步请求必须在线程中执行 ;


 

/**
     * OkHttp 同步 Get 请求
     */
    private void httpSynchronousGet() {
        // Request 中封装了请求相关信息
        Request request = new Request.Builder()
                .url("https://www.baidu.com")   // 设置请求地址
                .get()                          // 使用 Get 方法
                .build();
        // 同步 Get 请求
        new Thread(new Runnable() {
            @Override
            public void run() {
                Response response = null;
                try {
                    response = mOkHttpClient.newCall(request).execute();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                String result = null;
                try {
                    result = response.body().string();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                Log.i(TAG, "result : " + result);
            }
        }).start();
    }







三、OkHttp 同步 Post 请求


OkHttp 同步 Post 请求分为 3 33 个步骤 :


① 首先 , 创建 FormBody 对象 , 设置 Post 请求表单 ;


       // 创建 Post 表单 , 主要用于设置 Post 请求键值对

// 创建 Post 表单 , 主要用于设置 Post 请求键值对
        FormBody formBody = new FormBody.Builder()
                .add("Key", "Value")
                .build();

   

② 然后 , 创建 Request 请求对象 , 并传入 FormBody 表单 ;


     

// Request 中封装了请求相关信息
        Request request = new Request.Builder()
                .url("https://www.baidu.com")   // 设置请求地址
                .post(formBody)                          // 使用 Post方法
                .build();


③ 最后 , 进行同步 Post 请求 , 注意要在线程中使用同步 Post 方法 ;


 

// 同步 Get 请求
        new Thread(new Runnable() {
            @Override
            public void run() {
                Response response = null;
                try {
                    response = mOkHttpClient.newCall(request).execute();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                String result = null;
                try {
                    result = response.body().string();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                Log.i(TAG, "result : " + result);
            }
        }).start();


目录
相关文章
|
JSON 网络协议 Java
OkHttp3发送http请求在Java中的使用方法
记录总结一下Http的get请求和post请求的使用方法和问题解决
1968 0
|
JSON 数据格式
okhttp3 模拟get、post(json参数传递,form表单提交)
本文是博主学习okhttp3 的记录,希望对大家有所帮助。
3471 0
|
XML JSON Java
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
2429 0
|
安全 Android开发
Android之OKHttp基本使用和OKHttp发送https请求安全认证
Android之OKHttp基本使用和OKHttp发送https请求安全认证
1489 0
|
XML Java Android开发
Android Studio App开发之实现底部标签栏BottomNavigationView和自定义标签按钮实战(附源码 超详细必看)
Android Studio App开发之实现底部标签栏BottomNavigationView和自定义标签按钮实战(附源码 超详细必看)
1632 0
|
XML 开发工具 Android开发
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
ExoPlayer最初是为了解决Android早期MediaPlayer控件对网络视频兼容性差的问题而推出的。现在,Android官方已将其升级并纳入Jetpack的Media3库,使其成为音视频操作的统一引擎。新版ExoPlayer支持多种协议,解决了设备和系统碎片化问题,可在整个Android生态中一致运行。通过修改`build.gradle`文件、布局文件及Activity代码,并添加必要的权限,即可集成并使用ExoPlayer进行网络视频播放。具体步骤包括引入依赖库、配置播放界面、编写播放逻辑以及添加互联网访问权限。
1791 1
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
|
缓存 Java API
OKHttp详解
OKHttp详解
|
Android开发
Android监听USB设备插拔
Android监听USB设备插拔
2006 7
|
JSON fastjson Java
FastJson使用技巧
FastJson使用技巧
7360 158
|
存储 API Android开发
29. 【Android教程】折叠列表 ExpandableListView
29. 【Android教程】折叠列表 ExpandableListView
1472 2