你的位置:首页 > Java教程

[Java教程]解决httpclient访问ssl资源报证书错误的问题


public class HttpsTest {  @SuppressWarnings("deprecation")  public static void main(String[] args) {    try {      SSLContext context = SSLContext.getInstance("SSL");      context.init(null, new TrustManager[] {new X509TrustManager() {        @Override        public void checkClientTrusted(X509Certificate[] paramArrayOfX509Certificate, String paramString)            throws CertificateException {        }        @Override        public void checkServerTrusted(X509Certificate[] paramArrayOfX509Certificate, String paramString)            throws CertificateException {        }        @Override        public X509Certificate[] getAcceptedIssuers() {          return null;        }      }}, new SecureRandom());      HostnameVerifier verifier = new HostnameVerifier() {        public boolean verify(String hostname, SSLSession session) {          return true;        }      };      SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(context, verifier);      HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslConnectionSocketFactory).build();      String url = "https://pic2.zhimg.com/6f7c6805962dc58cc21d4df748f18125_xl.jpg";      HttpGet request = new HttpGet(url);      HttpResponse response = httpClient.execute(request);      HttpEntity entity = response.getEntity();      InputStream in = entity.getContent();      byte[] b = new byte[1024];      int len = 0;      OutputStream out = new FileOutputStream("E:/testImage/" + "httpstest.jpg");      while ((len = in.read(b)) != -1) {        out.write(b, 0, len);      }      out.close();    } catch (Exception e) {      e.printStackTrace();    }  }}