okhttp android 使用教程

	网上有很多教程,但是随着时间的更新,android 系统也在更新,而我这个教程是最新的教程了。

最新教程时间:2021-5-28
一 .要注意的问题:

   android 使用网络必须要打开网络权限
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
   然后区分网络协议   Https (通过加密的安全连接协议),http(普通http协议)
   如果不区分,可能出现请求报错,网上很多教程都是基于Https 协议实现的,

比如 Https 安全连接会连接成功,如下是成功的。

 Request request = new Request.Builder()
                            .url("https://reqres.in/api/users/2")
                            .build();

而你的可能是不安全的http ,如下是失败的,会报错。重要的事情大字提示。

 Request request = new Request.Builder()
                            .url("http://www.sosoapi.com/pass/mock/12003/test/gettest")
                            .build();
   因此请求的是时候会报错。 
   解决报错问题方法 :
   1.在文件 AndroidManifest.xml  加入以下权限,如下所示
  	
  	<uses-permission android:name="android.permission.INTERNET"/>
   
   2.AndroidManifest.xml 加入代码

	android:supportsRtl="true"

二 .开始写代码

   确认完重要的部分,开始添加库,和代码实例,可以直接复制粘贴使用我的代码哦。

	1.添加okhttp的库源

 	implementation("com.squareup.okhttp3:okhttp:4.9.0")
	2.代码示例,Get同步请求,注意下面我使用了不安全http "http://www.sosoapi.com/pass/mock/12003/test/gettest"
	需要加入上面所说的一些权限,否则会失败,但是如果是用的https 就不需要加入上面的权限。

  //同步GET请求
private void okhttp_get(String dev_number){
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                //2.创建OkHttpClient对象
                OkHttpClient client = new OkHttpClient();
                //3.创建Request 对象
                Request request = new Request.Builder()
                        .url("http://www.sosoapi.com/pass/mock/12003/test/gettest")//
                        .build();
                Response response = client.newCall(request).execute();//得到Response 对象
                String mContent = response.body().string();//得到返回响应,注意response.body().string() 只能调用一次!
                //请求成功判断
                if (response.isSuccessful()) {
                    System.out.println("ok----------------");
                    System.out.println(mContent);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }).start();
}

这是代码返回的结果显示的结果
ok----------------
[{“name”:“get测试”,“content”:“你成功获取了数据”}]

上一篇:Noip模拟63 2021.9.27(考场惊现无限之环)


下一篇:安卓 原生okhttp使用get与post获取网络数据