Java JDK1.6,HttpURLConnection获取HTTPS链接,SSL

MyX509TrustManager.java

import java.security.cert.CertificateException;  
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;  
  
public class MyX509TrustManager  implements  X509TrustManager {  
	@Override
	public void checkClientTrusted(X509Certificate[] chain, String authType)
			throws CertificateException {
	}
 
	@Override
	public void checkServerTrusted(X509Certificate[] chain, String authType)
			throws CertificateException {
	}
 
	@Override
	public X509Certificate[] getAcceptedIssuers() {
		return null;
	}
}

TrustAnyHostnameVerifier.java

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;

public class TrustAnyHostnameVerifier implements HostnameVerifier {
    public boolean verify(String hostname, SSLSession session) {
        // 直接返回true
        return true;
    }
}

test.java

public static String gethtml() throws IOException, NoSuchAlgorithmException, NoSuchProviderException, KeyManagementException {
		
		//解决Javajdk1.6,https的问题
		// 创建SSLContext对象,并使用我们指定的信任管理器初始化   
        TrustManager[] tm = { new MyX509TrustManager() };  
        SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");  
        sslContext.init(null, tm, new java.security.SecureRandom());          
        // 从上述SSLContext对象中得到SSLSocketFactory对象   
        SSLSocketFactory ssf = sslContext.getSocketFactory();  


		URL urlx = new URL("https://abc.com/?sss=3434343");
		//HttpURLConnection uc = (HttpURLConnection) urlx.openConnection();
		
		HttpsURLConnection uc = (HttpsURLConnection) urlx.openConnection(); 
		
		uc.setDoInput(true);
		uc.setUseCaches(false);
		uc.setRequestMethod("GET");
		uc.setInstanceFollowRedirects(false);
		uc.setConnectTimeout(10 * 1000); 
		uc.setReadTimeout(10*1000);
											
		
		uc.setSSLSocketFactory(ssf);//解决Javajdk1.6,https的问题
		uc.setHostnameVerifier(new TrustAnyHostnameVerifier());//解决Javajdk1.6,https的问题
		
		uc.setRequestProperty("Connection", "Keep-Alive");
		uc.setRequestProperty(
				"Accept",
				"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-shockwave-flash, */*");
		uc.setRequestProperty("Accept-Language", "zh-cn");
		
		uc.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36");
		
			uc.setRequestProperty("Cookie", "");

		String vhtml = "";
		System.out.println(uc.getResponseCode());

		String htmltype = "utf-8";
		
		try {
			java.io.InputStream inputstream = uc.getInputStream();
			BufferedReader bufferedreader = null;
			if (htmltype == null || htmltype.trim().equals(""))
				bufferedreader = new BufferedReader(new InputStreamReader(
						inputstream));
			else
				bufferedreader = new BufferedReader(new InputStreamReader(
						inputstream, htmltype));
			String s1;
			// String vhtml = "";
			while ((s1 = bufferedreader.readLine()) != null) {
					vhtml = vhtml + s1;
				
			}

			return vhtml;
		} catch (Exception e) {
			// TODO: handle exception
		}
		return vhtml;
	}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值