package com.adups.wql.httpredirecttohttps;import android.util.Log;import com.squareup.okhttp.OkHttpClient;import com.squareup.okhttp.Request;import com.squareup.okhttp.Response;import java.io.IOException;import java.security.SecureRandom;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.concurrent.TimeUnit;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;/** * Created by bigTree on 2017/2/6. */public class okhttp {    String url = "";    static OkHttpClient okHttpClient = new OkHttpClient();    static {        okHttpClient.setConnectTimeout(30, TimeUnit.SECONDS);        okHttpClient.setReadTimeout(30, TimeUnit.SECONDS);        okHttpClient.setWriteTimeout(30, TimeUnit.SECONDS);        // okHttpClient.interceptors().add(new LoggingInterceptor());        //为false就是自定义重定向,true 就是自己内部就重定向了,只返回最后就结果        okHttpClient.setFollowRedirects(false);        trustAllHosts();//设置忽略安全证书验证        okHttpClient.setHostnameVerifier(new HostnameVerifier() {            @Override            public boolean verify(String hostname, SSLSession session) {                return true;            }        });    }    public static String run(String url) throws IOException {        Request request = new Request.Builder().url(url).get().build();        Response response = okHttpClient.newCall(request).execute();//        Log.e("response.code()", "" + response.code());//        Log.e("httpUrl", "" + response.request().httpUrl());//        Log.e("response.body()", "" + response.body().string());        Log.e("Location", "" + response.headers().get("Location"));//        Log.e("headers", "" + request.url());        int code = response.code();        if (code == 302) {            String location = response.headers().get("Location");            run(location);        } else if (response.isSuccessful()) {            return response.body().string();        } else {            throw new IOException("Unexpected code " + response);        }        return "";    }    public static void trustAllHosts() {        // Create a trust manager that does not validate certificate chains        // Android use X509 cert        TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {            public X509Certificate[] getAcceptedIssuers() {                return new X509Certificate[]{};            }            public void checkClientTrusted(X509Certificate[] chain,                                           String authType) throws CertificateException {            }            public void checkServerTrusted(X509Certificate[] chain,                                           String authType) throws CertificateException {            }        }};        // Install the all-trusting trust manager        try {            SSLContext sc = SSLContext.getInstance("TLS");            sc.init(null, trustAllCerts, new SecureRandom());            okHttpClient.setSslSocketFactory(sc.getSocketFactory());        } catch (Exception e) {            e.printStackTrace();        }    }}

更多相关文章

  1. Android栗子の图片验证码生成
  2. Android(安卓)滑动验证的一种简单实现
  3. 【Android】logcat日志信息过滤
  4. android 端生成随机验证码 实现
  5. MTK androiod5.1源码精简系统APP
  6. Android中关于APP打包的那些事
  7. Android版本加固后签名
  8. Git的忽略文件的语法规则
  9. 面试官系列 - https 真的安全吗,可以抓包吗,如何防止抓包吗

随机推荐

  1. css基础:简单的选择器、伪类选择器与前端
  2. 0322作业-css基本语法、选择器及模块化开
  3. php中判断坐标点是否在一个区域中
  4. 万岳教育APP源码丨开源网校源码
  5. 在苹果Mac上如何进行录音修剪?
  6. 循环题目
  7. 招投标IT项目怎么知道是否赚钱?
  8. 应届网工毕业生该如何斩获心仪offer?面试
  9. MiniRDS空间扩容
  10. 怎么区别项目 项目集 项目组合管理?