栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

OkHttp基础用法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OkHttp基础用法

OKHttp的基础用法



  • 准备工作
  • 核心代码



第一章 准备工作 第01节 资源库的准备 1、位置
在 build.gradle 当中的 dependencies 里面导入 okhttp 的操作。
2、代码
implementation 'com.squareup.okhttp3:okhttp:4.9.0'



第02节 清单文件权限 1、位置
在 manifests 清单文件当中的 AndroidManifest.xml 当中引入网络权限
2、代码



第03节 布局控件准备 1、位置
res/layout/activity_main.xml 当中添加按钮信息。
2、代码


    
    



第04节 提前创建对象 1、位置
在 MainActivity 里面,提前创建好 OkHttp的对象,以便于下面的使用
2、代码
public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private OkHttpClient okHttpClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
        //需要提前准备好的okHttp的对象
        okHttpClient = new OkHttpClient();
    }
}



第二章 核心代码 第01节 GET同步请求 1、说明
GET 同步请求:
	1、同步的操作,需要放在线程当中执行
	2、完成需要的步骤有四步:
			A. 获取到请求的对象
			B. 获取到回调的对象
			C. 同步请求,得到响应对象
			D. 获取到响应体信息
2、代码
//GET请求, 同步的 GET请求方式
btnGetSync.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        new Thread(()->{
            try {
                //1、获取到请求的对象
                Request request = new Request.Builder().url("https://www.httpbin.org/get?a=1&b=2").get().build();
                //2、获取到回调的对象
                Call call = okHttpClient.newCall(request);
                //3、同步请求,得到响应的对象
                Response response = call.execute();
                //4、获取到响应体信息
                Log.i(TAG, "onClick: GET-SYNC "+response.body().string());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }).start();
    }
});
3、日志
2021-10-20 16:28:51.845 19762-19808/chc.svip.demo01 I/MainActivity: onClick: GET-SYNC {
      "args": {
        "a": "1", 
        "b": "2"
      }, 
      "headers": {
        "Accept-Encoding": "gzip", 
        "Host": "www.httpbin.org", 
        "User-Agent": "okhttp/4.9.0", 
        "X-Amzn-Trace-Id": "Root=1-616fd344-3794e0ff40a93e825a466f0f"
      }, 
      "origin": "113.57.157.75", 
      "url": "https://www.httpbin.org/get?a=1&b=2"
    }



第02节 GET异步请求 1、说明
GET 异步请求:
	1、异步的操作,不需要放在线程当中执行,异步操作,内部有线程进行维护
	2、完成需要步骤有四步:
			A. 获取到请求的对象
			B. 获取到回调的对象
			C. 异步请求,执行 CallBack
			D. 判断响应是否成功,获取响应体信息
2、代码
//GET请求, 异步的 GET请求方式
btnGetAsync.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //1、获取到请求的对象
        Request request = new Request.Builder().url("https://www.httpbin.org/get?a=1&b=2").get().build();
        //2、获取到回调的对象
        Call call = okHttpClient.newCall(request);
        //3、异步请求,执行CallBack
        call.enqueue(new Callback() {
            @Override
            public void onFailure(@NonNull Call call, @NonNull IOException e) {

            }

            @Override
            public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
                //判断响应是否成功了?
                if (response.isSuccessful()){
                    //输出响应体
                    Log.i(TAG, "onResponse: GET-ASYNC "+response.body().string());
                }
            }
        });
    }
});
3、日志
2021-10-20 16:33:18.702 19762-19959/chc.svip.demo01 I/MainActivity: onResponse: GET-ASYNC {
      "args": {
        "a": "1", 
        "b": "2"
      }, 
      "headers": {
        "Accept-Encoding": "gzip", 
        "Host": "www.httpbin.org", 
        "User-Agent": "okhttp/4.9.0", 
        "X-Amzn-Trace-Id": "Root=1-616fd44f-579aac220d280ce05e86ca34"
      }, 
      "origin": "113.57.157.75", 
      "url": "https://www.httpbin.org/get?a=1&b=2"
    }



第03节 POST同步请求 1、说明
POST 同步请求:
	1、同步的操作,需要放在线程当中执行
	2、完成需要步骤有五步:
			A. 封装请求体数据
			B. 获取到请求的对象
			C. 获取到回调的对象
			D. 执行同步请求,获取到响应对象
			E. 通过响应对象,展示数据结果
2、代码
//POST请求, 同步的 POST请求方式
btnPostSync.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        new Thread(()->{
            try {
                //1、封装请求体数据
                FormBody formBody = new FormBody.Builder().add("a","1").add("b","2").build();
                //2、获取到请求的对象
                Request request = new Request.Builder().url("https://www.httpbin.org/post").post(formBody).build();
                //3、获取到回调的对象
                Call call = okHttpClient.newCall(request);
                //4、执行同步请求,获取到响应对象
                Response response = call.execute();
                //5、展示数据结果
                Log.i(TAG, "onClick: POST-SYNC "+response.body().string());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }).start();
    }
});
3、日志
2021-10-20 16:37:55.649 19762-20263/chc.svip.demo01 I/MainActivity: onClick: POST-SYNC {
      "args": {}, 
      "data": "", 
      "files": {}, 
      "form": {
        "a": "1", 
        "b": "2"
      }, 
      "headers": {
        "Accept-Encoding": "gzip", 
        "Content-Length": "7", 
        "Content-Type": "application/x-www-form-urlencoded", 
        "Host": "www.httpbin.org", 
        "User-Agent": "okhttp/4.9.0", 
        "X-Amzn-Trace-Id": "Root=1-616fd564-2ead68b34363d59972d1ab60"
      }, 
      "json": null, 
      "origin": "113.57.157.75", 
      "url": "https://www.httpbin.org/post"
    }



第04节 POST异步请求 1、说明
POST 异步请求:
	1、异步的操作,不需要在线程当中执行,异步操作,内部有线程进行维护
	2、完成需要步骤有五步:
			A. 封装请求体数据
			B. 获取请求的对象
			C. 获取到回调的对象
			D. 执行异步请求
			E. 判断响应成功
2、代码
//POST请求, 异步的 POST请求方式
btnPostAsync.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //1、封装请求体数据
        FormBody formBody = new FormBody.Builder().add("a","1").add("b","2").build();
        //2、获取到请求的对象
        Request request = new Request.Builder().url("https://www.httpbin.org/post").post(formBody).build();
        //3、获取到回调的对象
        Call call = okHttpClient.newCall(request);
        //4、执行异步请求
        call.enqueue(new Callback() {
            @Override
            public void onFailure(@NonNull Call call, @NonNull IOException e) {

            }

            @Override
            public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
                //5、判断是否响应成功
                if (response.isSuccessful()){
                    //展示结果
                    Log.i(TAG, "onResponse: POST-ASYNC "+response.body().string());
                }
            }
        });
    }
});
3、日志
2021-10-20 16:42:33.448 19762-20527/chc.svip.demo01 I/MainActivity: onResponse: POST-ASYNC {
      "args": {}, 
      "data": "", 
      "files": {}, 
      "form": {
        "a": "1", 
        "b": "2"
      }, 
      "headers": {
        "Accept-Encoding": "gzip", 
        "Content-Length": "7", 
        "Content-Type": "application/x-www-form-urlencoded", 
        "Host": "www.httpbin.org", 
        "User-Agent": "okhttp/4.9.0", 
        "X-Amzn-Trace-Id": "Root=1-616fd67a-6e7191e65578212416d6defd"
      }, 
      "json": null, 
      "origin": "113.57.157.75", 
      "url": "https://www.httpbin.org/post"
    }






转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336584.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号