使用HttpURLConnection 越过ssl证书访问htts协议接口


```java

	static HostnameVerifier hv = new HostnameVerifier() {
		@Override
		public boolean verify(String urlHostName, SSLSession session) {
			System.out.println("Warning: URL Host: " + urlHostName + " vs. "
					+ session.getPeerHost());
			return true;
		}

	};

	private static void trustAllHttpsCertificates() throws Exception {
		javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
		javax.net.ssl.TrustManager tm = new miTM();
		trustAllCerts[0] = tm;
		javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext
				.getInstance("SSL");
		sc.init(null, trustAllCerts, null);
		javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc
				.getSocketFactory());

	}

	static class miTM implements javax.net.ssl.TrustManager,
			javax.net.ssl.X509TrustManager {
		public java.security.cert.X509Certificate[] getAcceptedIssuers() {
			return null;
		}

		public boolean isServerTrusted(
				java.security.cert.X509Certificate[] certs) {
			return true;
		}

		public boolean isClientTrusted(
				java.security.cert.X509Certificate[] certs) {
			return true;
		}

		public void checkServerTrusted(
				java.security.cert.X509Certificate[] certs, String authType)
				throws java.security.cert.CertificateException {
			return;
		}

		public void checkClientTrusted(
				java.security.cert.X509Certificate[] certs, String authType)
				throws java.security.cert.CertificateException {
			return;
		}
	}

使用时申明调用

public static String check(String key,String uri){
		trace.info("auth check uri "+uri);
		String responsestr="fail";
		URL wsurl;
		HttpURLConnection uconn=null;
		PrintWriter out1;
		char Readbuf[];
		BufferedReader in1;
		StringBuffer respb;
		int len;
		 String key1 = "key="+key;
	  
          String params=key1;
		     
		try {
			trace.info("auth check "+key);
			try {
				trustAllHttpsCertificates();
				HttpsURLConnection.setDefaultHostnameVerifier(hv);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			wsurl=new URL(uri);
			uconn=(HttpURLConnection) wsurl.openConnection();
			uconn.setRequestMethod("POST");  
			uconn.setAllowUserInteraction(false);
			uconn.setDoOutput(true);
			uconn.setDoInput(true);
			uconn.setUseCaches(false);
			uconn.setConnectTimeout(3000);
			uconn.setReadTimeout(5000);
			out1=new PrintWriter(uconn.getOutputStream());

			out1.write(params, 0, params.length());
	
			out1.close();
			in1=new BufferedReader(new InputStreamReader(uconn.getInputStream()));
			Readbuf =new char[1024];
			respb=new StringBuffer(1024);
			while((len=in1.read(Readbuf))!=-1){
				respb.append(Readbuf,0,len);
			}
			in1.close();
			
			
			
			responsestr=respb.toString();
			
		} catch (MalformedURLException e) {
			trace.error(key+ " Authentication MalformedURLException "+e.getMessage());
		} catch (IOException e) {
			trace.error(key+" Authentication IOException "+e.getMessage());
		}finally{
			if(uconn!=null){       
			uconn.disconnect();
			trace.info("disconnect "+key);
			}
		}
		return responsestr;
	}

引用之后就可以使用了

更多推荐