okhttp是一个第三方类库,用于android中请求网络。
这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。
1.同步get请求:开启子线程
2.同步post请求:开启子线程
3.异步get请求:不需要开启子线程
public void doGet(String url, final MyCallBack myCallBack){
Request.Builder builder = new Request.Builder();
builder.url(url);
Request request = builder.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
myCallBack.fail(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
myCallBack.succeed(response.body().string());
}
});
}
4.异步post请求:不需要开启子线程
public void doPost(String url, final MyCallBack myCallBack, HashMap<String,String> map){
Request.Builder builder = new Request.Builder();
FormBody.Builder frombody = new FormBody.Builder();
Set<String> keySet = map.keySet();
for (String key:keySet) {
String v = map.get(key);
frombody.add(key,v);
}
FormBody body = frombody.build();
builder.post(body);
builder.url(url);
Request request = builder.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
myCallBack.fail(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
myCallBack.succeed(response.body().string());
}
});
}
简单工具类
package com.example.day16_okhttp;
import java.io.IOException;
import java.util.HashMap;
import java.util.Set;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkUtils {
OkHttpClient client;
public OkUtils() {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
client = builder.build();
}
private static OkUtils okUtils;
public static OkUtils getInstance(){
if (okUtils == null){
synchronized (String.class){
if (okUtils == null){
okUtils = new OkUtils();
}
}
}
return okUtils;
}
public void doGet(String url, final MyCallBack myCallBack){
Request.Builder builder = new Request.Builder();
builder.url(url);
Request request = builder.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
myCallBack.fail(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
myCallBack.succeed(response.body().string());
}
});
}
public void doPost(String url, final MyCallBack myCallBack, HashMap<String,String> map){
Request.Builder builder = new Request.Builder();
FormBody.Builder frombody = new FormBody.Builder();
Set<String> keySet = map.keySet();
for (String key:keySet) {
String v = map.get(key);
frombody.add(key,v);
}
FormBody body = frombody.build();
builder.post(body);
builder.url(url);
Request request = builder.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
myCallBack.fail(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
myCallBack.succeed(response.body().string());
}
});
}
}