您的位置:首页 > 理论基础 > 计算机网络

OkHttpClient请求

2017-09-21 21:02 363 查看
//OKHttp请求依赖
compile 'com.squareup.okhttp3:okhttp:3.9.0'


public class App extends Application {

//OkHttpClient实例是唯一的, 所有的请求都会通过这个OkHttpClient,所以所有的请求都可能被拦截器拦截,
// 我们可以在这个必经之路,做一些通用的操作,比如打印日志.
private static OkHttpClient okHttpClient;

@Override
public void onCreate() {
super.onCreate();
//建议一个app只有一个OkHttpClient实例
okHttpClient = new OkHttpClient();
okHttpClient = okHttpClient.newBuilder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.addInterceptor(new MyLogInterceptor())//拦截器
.build();
}

public static OkHttpClient okHttpClient() {
return okHttpClient;
}

//拦截器,可以修改header,可以通过拦截器打印日志
public class MyLogInterceptor implements Interceptor {

@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request().newBuilder()
.header("shenfenyanzheng", "zhangsan")
.build();
HttpUrl url = request.url();
String httpUrl = url.url().toString();
Response response = chain.proceed(request);
int code = response.code();
return response;
}
}
}


//在方法中使用

//异步,所以的回调方法里面都是分线程.不能更新ui
//request 设置url
Request request = new Request.Builder()
.url("http://www.baidu.com")
.build();
App.okHttpClient().newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "get失败", Toast.LENGTH_SHORT).show();
}
});
}

@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
//得到Json串
String json = response.body().string();
//用Gson解析
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
}
});
} else {
//提示用户
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show();
}
});
}
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 布局 触控