package com.lzy.okhttpdemo.activity;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import com.lzy.okhttpdemo.R;
import com.lzy.okhttpdemo.callback.StringDialogCallback;
import com.lzy.okhttpdemo.utils.Constant;
import com.lzy.okhttputils.OkHttpUtils;
import butterknife.ButterKnife;
import butterknife.OnClick;
import okhttp3.Call;
import okhttp3.Request;
import okhttp3.Response;
public class HttpsActivity extends BaseActivity {
private static final String CER_12306 = "-----BEGIN CERTIFICATE-----\n" +
"MIICmjCCAgOgAwIBAgIIbyZr5/jKH6QwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ04xKTAn\n" +
"BgNVBAoTIFNpbm9yYWlsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRTUkNBMB4X\n" +
"DTA5MDUyNTA2NTYwMFoXDTI5MDUyMDA2NTYwMFowRzELMAkGA1UEBhMCQ04xKTAnBgNVBAoTIFNp\n" +
"bm9yYWlsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRTUkNBMIGfMA0GCSqGSIb3\n" +
"DQEBAQUAA4GNADCBiQKBgQDMpbNeb34p0GvLkZ6t72/OOba4mX2K/eZRWFfnuk8e5jKDH+9BgCb2\n" +
"9bSotqPqTbxXWPxIOz8EjyUO3bfR5pQ8ovNTOlks2rS5BdMhoi4sUjCKi5ELiqtyww/XgY5iFqv6\n" +
"D4Pw9QvOUcdRVSbPWo1DwMmH75It6pk/rARIFHEjWwIDAQABo4GOMIGLMB8GA1UdIwQYMBaAFHle\n" +
"tne34lKDQ+3HUYhMY4UsAENYMAwGA1UdEwQFMAMBAf8wLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDov\n" +
"LzE5Mi4xNjguOS4xNDkvY3JsMS5jcmwwCwYDVR0PBAQDAgH+MB0GA1UdDgQWBBR5XrZ3t+JSg0Pt\n" +
"x1GITGOFLABDWDANBgkqhkiG9w0BAQUFAAOBgQDGrAm2U/of1LbOnG2bnnQtgcVaBXiVJF8LKPaV\n" +
"23XQ96HU8xfgSZMJS6U00WHAI7zp0q208RSUft9wDq9ee///VOhzR6Tebg9QfyPSohkBrhXQenvQ\n" +
"og555S+C3eJAAVeNCTeMS3N/M5hzBRJAoffn3qoYdAO1Q8bTguOi+2849A==\n" +
"-----END CERTIFICATE-----";
@Override
protected void onActivityCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_https);
ButterKnife.bind(this);
setTitle(Constant.getData().get(7)[0]);
}
@Override
protected void onDestroy() {
super.onDestroy();
//Activity销毁时,取消网络请求
OkHttpUtils.getInstance().cancelTag(this);
}
@OnClick(R.id.btn_none_https_request)
public void btn_none_https_request(View view) {
OkHttpUtils.get("https://github.com/jeasonlzy0216")//
.tag(this)//
.headers("header1", "headerValue1")//
.params("param1", "paramValue1")//
.execute(new HttpsCallBack(this));
}
@OnClick(R.id.btn_https_request)
public void btn_https_request(View view) {
try {
//证书可以在全局初始化的时候设置,不用每次请求设置一遍
OkHttpUtils.get("https://kyfw.12306.cn/otn")//
.tag(this)//
.headers("Connection", "close") //如果对于部分自签名的https访问不成功,需要加上该控制头
.headers("header1", "headerValue1")//
.params("param1", "paramValue1")//
// .setCertificates(new Buffer().writeUtf8(CER_12306).inputStream()) //方法一:设置自签名网站的证书(选一种即可)
.setCertificates(getAssets().open("srca.cer")) //方法二:也可以设置https证书(选一种即可)
// .setCertificates() //方法三:信任所有证书(选一种即可)
//方法四:传入bks证书,密码,和cer证书,支持双向加密
// .setCertificates(getAssets().open("aaaa.bks"), "123456", getAssets().open("srca.cer"))
.execute(new HttpsCallBack(this));
} catch (Exception e) {
e.printStackTrace();
}
}
private class HttpsCallBack extends StringDialogCallback {
public HttpsCallBack(Activity activity) {
super(activity);
}
@Override
public void onResponse(boolean isFromCache, String data, Request request, Response response) {
handleResponse(isFromCache, data, request, response);
}
@Override
public void onError(boolean isFromCache, Call call, @Nullable Response response, @Nullable Exception e) {
super.onError(isFromCache, call, response, e);
handleError(isFromCache, call, response);
}
}
}