网上有很多教程,但是随着时间的更新,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”:“你成功获取了数据”}]