https 忽略证书

来源:互联网 发布:linux c一站式编程 编辑:程序博客网 时间:2024/05/21 06:34
import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.FileOutputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.HashMap;import java.util.Map;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;public class HttpsGetData {private static class TrustAnyTrustManager implements X509TrustManager {public void checkClientTrusted(X509Certificate[] chain, String authType)throws CertificateException {}public void checkServerTrusted(X509Certificate[] chain, String authType)throws CertificateException {}public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[] {};}}private static class TrustAnyHostnameVerifier implements HostnameVerifier {public boolean verify(String hostname, SSLSession session) {return true;}}String _url = "";Map<String, String> _params;public HttpsGetData(String url, Map<String, String> keyValueParams) {this._url = url;this._params = keyValueParams;}public String Do() throws Exception {String result = "";BufferedReader in = null;try {String urlStr = this._url + "?" + getParamStr();System.out.println("GET请求的URL为:" + urlStr);SSLContext sc = SSLContext.getInstance("SSL");sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },new java.security.SecureRandom());URL realUrl = new URL(urlStr);// 打开和URL之间的连接HttpsURLConnection connection = (HttpsURLConnection) realUrl.openConnection();// 设置https相关属性connection.setSSLSocketFactory(sc.getSocketFactory());connection.setHostnameVerifier(new TrustAnyHostnameVerifier());connection.setDoOutput(true);// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立实际的连接connection.connect();int responseCode = connection.getResponseCode();System.out.println(responseCode);// 定义 BufferedReader输入流来读取URL的响应if (responseCode != 200) {InputStream errorStream = connection.getErrorStream();in = new BufferedReader(new InputStreamReader(errorStream,"UTF-8"));String line;while ((line = in.readLine()) != null) {result += line;}System.out.println("获取的结果为:" + result);} else {FileOutputStream fos = null;BufferedInputStream bis = null;byte[] buf = new byte[10240];int size = 0;InputStream inputStream = connection.getInputStream();bis = new BufferedInputStream(inputStream);// 建立文件fos = new FileOutputStream("D:\\nnnnnnn.jpg");// 保存文件while ((size = bis.read(buf)) != -1)fos.write(buf, 0, size);inputStream.close();fos.flush();fos.close();bis.close();}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);// e.printStackTrace();throw e;}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {// e2.printStackTrace();throw e2;}}return result;}private String getParamStr() {String paramStr = "";// 获取所有响应头字段Map<String, String> params = this._params;// 获取参数列表组成参数字符串for (String key : params.keySet()) {paramStr += key + "=" + params.get(key) + "&";}// 去除最后一个"&"paramStr = paramStr.substring(0, paramStr.length() - 1);return paramStr;}public static void main(String[] args) {Map<String, String> keyValueParams = new HashMap<String, String>();keyValueParams.put("access_token","afeab0c1-1ac9-4bfd-9a23-7cad8737c460");keyValueParams.put("file_id", "7122797");HttpsGetData httpsGetData = new HttpsGetData("https://www.cunnar.com/opencloud/api/account/file/download.json",keyValueParams);try {httpsGetData.Do();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

0 0