1.添加依賴
implementation("com.squareup.okhttp3:okhttp:4.3.1")
2.異步GET請求
-new OkHttpClient;
-構造Request對象;
-通過前兩步中的對象構建Call對象;
-通過Call#enqueue(Callback)方法來提交異步請求;
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(3,TimeUnit.SECONDS)
.writeTimeout(3,TimeUnit.SECONDS)
.readTimeout(3,TimeUnit.SECONDS)
.build();
final Request request = new Request.Builder()
.url(Constants.GET_CURRENT_ANDROID_APP_VERSION_URL + url)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String s = response.body().string();
CheckAppVersionProtocol checkAppVersionProtocol =
GsonUtils.paserJsonToBean(s,CheckAppVersionProtocol.class);
Message msg = new Message();
msg.obj = checkAppVersionProtocol;
msg.what = 2;
handler.sendMessage(msg);
}
}
3.異步POST請求提交String
MediaType mediaType = MediaType.parse("text/x-markdown; charset=utf-8");
String requestBody = "Hello lzy.";
Request request = new Request.Builder()
.url("...")
.post(RequestBody.create(mediaType, requestBody))
.build();
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d(TAG, "onFailure: " + e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d(TAG, response.protocol() + " " +response.code() + " " + response.message());
Headers headers = response.headers();
for (int i = 0; i < headers.size(); i++) {
Log.d(TAG, headers.name(i) + ":" + headers.value(i));
}
Log.d(TAG, "onResponse: " + response.body().string());
}
});
3.POST方式提交表單(常見)
OkHttpClient okHttpClient = new OkHttpClient
.Builder()
.connectTimeout(5,TimeUnit.SECONDS)
.readTimeout(5,TimeUnit.SECONDS)
.writeTimeout(5,TimeUnit.SECONDS)
.build();
RequestBody requestBody = new FormBody
.Builder()
.add("username",username)
.add("password",password)
.add("ipaddress",ip)
.build();
Request requestPost = new Request.Builder()
.url(Constants.BASE_LOGIN_URL + "appid=" + Constants.APP_ID
+ "&encrypt=" + encrypt)
.post(requestBody)
.build();
okHttpClient.newCall(requestPost).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Utils.runOnUIThread(new Runnable() {
@Override
public void run() {
loadingProgress.dismiss();
Toast.makeText(LoginActivity.this,
Constants.CONNECTION_TIMEOUT,Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String s = response.body().string();
LoginResponse loginResponse = GsonUtils.paserJsonToBean(s,LoginResponse.class);
Message msg = new Message();
msg.obj = loginResponse;
msg.what = 1;
handler.sendMessage(msg);
}
});
}