一.什么是OKHttp
二.OKHttp的使用
1.依赖,最新项目地址是 https://github.com/square/okhttp
dependencies {
implementation("com.squareup.okhttp3:okhttp:3.13.1")
}
2. 把权限加上
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
3.异步Get请求
注意返回的Callback是在Okhttp线程中,而不是主线程
OkHttpClient httpclient = new OkHttpClient();
String url = "https://www.baidu.com";
Request request = new Request.Builder()
.url(url)
.build();
Call call = httpclient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d(TAG, "onFailure: ");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d(TAG, "onResponse: " + response.toString());
}
});
4.异步Post请求
String url = "https://www.baidu.com";
MediaType mediaType = MediaType.parse("text/x-markdown; charset=utf-8");
String content = "username=shanshan";
RequestBody requestBody = RequestBody.create(mediaType, content);
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.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 {
Log.d(TAG, "thread = " + Thread.currentThread().getName());
Headers headers = response.headers();
for (int i = 0; i < headers.size(); i++) {
String value = headers.value(i);
Log.d(TAG, "onResponse: value = " + value);
}
}
});
5.同步Get请求
OkHttpClient httpclient = new OkHttpClient();
String url = "https://www.baidu.com";
Request request = new Request.Builder()
.url(url)
.build();
Call call = httpclient.newCall(request);
new Thread(new Runnable() {
@Override
public void run() {
Response response = null;
try {
response = call.execute();
Log.d(TAG, "onCreate: response" + response.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
本文详细介绍了OKHttp库的使用方法,包括依赖引入、权限设置、异步Get和Post请求的实现,以及同步Get请求的处理。通过实例展示了如何进行网络请求并处理响应。
574

被折叠的 条评论
为什么被折叠?



