Java中的HttpClient访问https

/**
	 * 设置可访问https
	 * @return
	 */
	public static CloseableHttpClient createSSLClientDefault() {
		try {
			SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
				//信任所有
				public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
					return true;
				}
			}).build();
			SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

			return HttpClients.custom().setSSLSocketFactory(sslsf).build();
		} catch (KeyManagementException e) {
			e.printStackTrace();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (KeyStoreException e) {
			e.printStackTrace();
		}
		return HttpClients.createDefault();
	}
public static String doGet(String url, Map param,
			HeaderParameter parameter) {

		// 创建Httpclient对象
		CloseableHttpClient httpclient = createSSLClientDefault();//调用createSSLClientDefault
		String resultString = "";
		CloseableHttpResponse response = null;
		try {

			// 创建uri
			URIBuilder builder = new URIBuilder(url);
			if (param != null) {
				for (String key : param.keySet()) {
					builder.addParameter(key, param.get(key));
				}
			}
			URI uri = builder.build();

			// 创建http GET请求
			HttpGet httpGet = new HttpGet(uri);
			//设置请求头
			if (parameter != null) {
				httpGet.addHeader("Token", parameter.getToken());
				httpGet.addHeader("Sign",parameter.getSign());
				httpGet.addHeader("Org_id", parameter.getOrg_id() + "");
				httpGet.addHeader("Product_id", parameter.getProduct_id() + "");
                httpGet.addHeader("Timestamp", parameter.getTimestamp());
			}

            // 执行请求
			response = httpclient.execute(httpGet);
			// 判断返回状态是否为200
			if (response.getStatusLine().getStatusCode() == 200) {
                resultString = EntityUtils.toString(response.getEntity(),
						"UTF-8");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (response != null) {
					response.close();
				}
				httpclient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return resultString;
	}

这是为了开发,不去验证SSL证书的写法,因为项目开发中用的是本地的SSL证书,太麻烦了

你可能感兴趣的:(Java中的HttpClient访问https)