添加 OkHttp 依赖库
要使用 OkHttp,必须在 gradle (Module) 层级的 dependencies 中内加入:
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
也可以额外增加以下两个,监视 API 与 APP 之间的传输状态
implementation 'com.squareup.okhttp3:okhttp-urlconnection:4.9.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'
若想将资料转成 Gson,可以加入:
implementation 'com.google.code.gson:gson:2.8.6'
新增完之後,记得按下Sync Now
若想使用最新版本可到 https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp 、https://mvnrepository.com/artifact/com.google.code.gson/gson 查看
权限宣告
若需要连线网路,必须在 AndroidManifest.xml 中宣告:
<uses-permission android:name="android.permission.INTERNET" />
OkHttp - GET连线
OkHttp的连线由三个部分组成:
private void sendGet() {
// 1: 宣告 OkHttpClient
OkHttpClient client = new OkHttpClient().newBuilder().build();
// 2: 宣告 Request,要求连到指定网址
Request request = new Request.Builder()
.url("https://jsonplaceholder.typicode.com/posts/1")
.build();
// 3: 宣告 Call
Call call = client.newCall(request);
// 执行 Call 连线後,采用 enqueue 非同步方式,获取到回应的结果资料
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) throws IOException {
// 连线成功
String result = response.body().string();
Log.d("res",result);
}
@Override
public void onFailure(Call call, IOException e) {
// 连线失败
Snackbar.make(findViewById(R.id.mainLayout),"连线失败",Snackbar.LENGTH_LONG).show();
}
});
}
OkHttp - POST连线
使用FormBody设置传送所需的夹带内容,再将FormBody交给Request,其它部分跟GET大同小异
private void sendPost() {
OkHttpClient client = new OkHttpClient().newBuilder().build();
// FormBody放要传的参数和值
FormBody formBody = new FormBody.Builder()
.add("userId", "1")
.add("id", "1")
.add("title", "OkHttp post practice")
.build();
// 建立Request,设置连线资讯
Request request = new Request.Builder()
.url("https://jsonplaceholder.typicode.com/posts")
.post(formBody) // 使用post连线
.build();
// 建立Call
Call call = client.newCall(request);
// 执行Call连线到网址
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) throws IOException {
// 连线成功
String result = response.body().string();
Log.d("result", result);
}
@Override
public void onFailure(Call call, IOException e) {
// 连线失败
Snackbar.make(findViewById(R.id.mainLayout),"连线失败",Snackbar.LENGTH_LONG).show();
}
});
}
谢谢大家愿意花时间阅读,小弟弟我在此鞠躬
<<: Day 28 「最好避免犯错的方法」单元测试与 GitFlow、主线开发
>>: Day14|【Git】档案管理 - 档案还原 git reset
如果类别要被继承,可以使用 open 修饰 open class Person(var name :...
学了半个月终於要端出「爆浆濑尿虾牛丸」了吗?要开始让大家体会一下牛肉(MCU)的鲜、濑尿虾(AI)的...
MyLastSearch 今天来看看这顾名思义就知道是要看我的搜寻纪录的工具,可以很直觉的想到用在查...
说到百花齐放的网路影片平台中,若有批次下载离线观看在 Youtube, Facebook, vime...
前言: 今天来介绍如何创建使用 CameraX 来显示预览 大纲 : build.gradle(ap...