因自己忘性太大,故记录此系列,以便复制粘贴
build.gradle配置
implementation 'com.squareup.okhttp3:okhttp:3.14.4'
implementation 'com.squareup.okio:okio:1.17.2'
AndroidManifest.xml添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
异步GET
private void get(String url){
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(20, TimeUnit.SECONDS)//连接超时
.readTimeout(10,TimeUnit.SECONDS)//读取超时
.build();
Request request = new Request.Builder()
.method("GET",null)
.url(url)
.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.e(TAG,e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d(TAG,response.body().string());
}
});
}
同步GET
private void get(String url){
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(20, TimeUnit.SECONDS)//连接超时
.readTimeout(10,TimeUnit.SECONDS)//读取超时
.build();
Request request = new Request.Builder()
.method("GET",null)
.url(url)
.build();
Call call = client.newCall(request);
new Thread(new Runnable() {
@Override
public void run() {
try {
//异步使用enqueue方法
Response response = call.execute();
if (response.isSuccessful()){
Log.i(TAG,response.body().string());
}else {
Log.e(TAG,response.message());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
异步POST
private void post(String url){
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(20,TimeUnit.SECONDS)
.readTimeout(10,TimeUnit.SECONDS)
.build();
//构造请求体(提交表单)
RequestBody body = new FormBody.Builder()
.add("key","value") //可添加多条参数
.build();
Request request = new Request.Builder()
.url(url)
.method("POST",body)
.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.e(TAG,e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d(TAG,response.body().string());
}
});
}
同步POST
private void post(String url){
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(20,TimeUnit.SECONDS)
.readTimeout(10,TimeUnit.SECONDS)
.build();
//构造请求体(提交表单)
RequestBody body = new FormBody.Builder()
.add("key","value")
.build();
Request request = new Request.Builder()
.url(url)
.method("POST",body)
.build();
Call call = client.newCall(request);
new Thread(new Runnable() {
@Override
public void run() {
try {
Response response = call.execute();
if (response.isSuccessful()){
Log.d(TAG,response.body().string());
}else {
Log.e(TAG,response.message());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
Okhttp基本使用步骤如下:
- 创建 OkHttpClient 实例
- 创建 Request 实例
- 通过 OkHttpClient 和 Request 封装成一个请求 Call
- 同步请求调用 Call.execute(),异步请求调用 Call.enqueue()
参考链接:点击跳转