直接使用类HttpsURLConnection访问Web页面 Java提供了一种非常简洁的方法来访问HTTPS网页,即使用类HttpsURLConnection、URL等。 类HttpsURLConnection似乎并没有提供方法设置信任管理器。 其实,HttpsURLConnection通过SSLSocket来建立与HTTPS的安全连接,SSLSocket对象是由SSLSocketFactory生成的。 对象,并设置其SSLSocketFactory对象 HttpsURLConnection httpsConn = (HttpsURLConnection)myURL.openConnection(); HttpsURLConnection conn; conn = (HttpsURLConnection)realUrl.openConnection(); conn.setSSLSocketFactory
import java.security.KeyStore; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection e) { e.printStackTrace(); } if (sslContext= null) { HttpsURLConnection.setDefaultSSLSocketFactory (sslContext .getSocketFactory()); } HttpsURLConnection.setDefaultHostnameVerifier 请求的数据 */ public static void post(String httpsUrl, String xmlStr) { HttpsURLConnection urlCon = null; try { urlCon = (HttpsURLConnection) (new URL(httpsUrl)).openConnection
sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection 异常的处理 在使用 URL url = new URL(url); 的时候,如果url是https的时候,使用 HttpsURLConnection con = (HttpsURLConnection) url.openConnection
(connection instanceof HttpsURLConnection)) {// http协议 //throw new RuntimeException ("An instance of HttpsURLConnection is expected"); super.prepareConnection(connection , httpMethod); } if (connection instanceof HttpsURLConnection) {// https ) connection).setSSLSocketFactory(ctx.getSocketFactory()); HttpsURLConnection httpsConnection = (HttpsURLConnection) connection; super.prepareConnection(httpsConnection, httpMethod
场景示例 假设我们在Java应用中尝试通过HTTPS请求访问一个API: URL url = new URL("https://example.com/api"); HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); connection.setRequestMethod("GET"); InputStream connection = (HttpsURLConnection) url.openConnection(); connection.setRequestMethod("GET connection = (HttpsURLConnection) url.openConnection(); connection.setRequestMethod("GET HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); connection.setSSLSocketFactory
{ StringBuilder buffer = new StringBuilder();a URL url = new URL(requestUrl); HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection(); httpsURLConnection.setRequestProperty ("accept", "*/*"); httpsURLConnection.setRequestProperty("connection", "Keep-Alive"); httpsURLConnection.setRequestProperty ("GET"); httpsURLConnection.connect(); InputStream inputStream = httpsURLConnection.getInputStream httpUrlConn = (HttpsURLConnection) url.openConnection(); httpUrlConn.setSSLSocketFactory(ssf)
to_station; System.out.println("URL:"+QUERY_RUL + param); URL url = new URL(QUERY_RUL + param); HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); con.setSSLSocketFactory(ssf); InputStreamReader purpose_codes=ADULT&queryDate=2016-06-06&from_station=BXP&to_station=WHN"; URL url = new URL(urlStr); HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); con.setSSLSocketFactory(ssf); InputStreamReader
(connection instanceof HttpsURLConnection)) {// http协议 //throw new RuntimeException(" An instance of HttpsURLConnection is expected"); super.prepareConnection(connection, httpMethod); } if (connection instanceof HttpsURLConnection) {// https协议,修改协议版本 ) connection).setSSLSocketFactory(ctx.getSocketFactory()); HttpsURLConnection httpsConnection = (HttpsURLConnection) connection; super.prepareConnection(httpsConnection, httpMethod
()); HttpsURLConnection conn = (HttpsURLConnection)new URL(https).openConnection ) url.openConnection(); ((HttpsURLConnection) http).setHostnameVerifier(DO_NOT_VERIFY ) url.openConnection(); ((HttpsURLConnection) http).setHostnameVerifier(DO_NOT_VERIFY ) url.openConnection(); ((HttpsURLConnection) http).setHostnameVerifier(DO_NOT_VERIFY ) url.openConnection(); ((HttpsURLConnection) http).setHostnameVerifier(DO_NOT_VERIFY
(ignoreHostnameVerifier); HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory (ignoreHostnameVerifier); HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory (url.getProtocol().toUpperCase().equals("HTTPS")) { trustAllHost(); HttpsURLConnection https = (HttpsURLConnection) url.openConnection(); connection = https; } https = (HttpsURLConnection) url.openConnection(); connection = https; }
最后,我们可以通过SSLContext类来创建一个HttpsURLConnection对象,从而实现与HTTPS服务器的通信。 sslContext.init(null, trustManagerFactory.getTrustManagers(), null);URL url = new URL(\https://example.com\HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();connection.setSSLSocketFactory(sslContext.getSocketFactory 然后,我们指定了目标HTTPS服务器的URL,并通过url.openConnection方法得到一个HttpsURLConnection对象。 最后,我们使用setSSLSocketFactory方法将SSLContext对象中的SocketFactory设置给HttpsURLConnection对象,从而实现与HTTPS服务器的通信。
(connection instanceof HttpsURLConnection)) {// http协议 //throw new RuntimeException(" An instance of HttpsURLConnection is expected"); super.prepareConnection(connection, httpMethod); } if (connection instanceof HttpsURLConnection) {// https协议,修改协议版本 ) connection).setSSLSocketFactory(ctx.getSocketFactory()); HttpsURLConnection httpsConnection = (HttpsURLConnection) connection; super.prepareConnection(httpsConnection, httpMethod
getconnbyget(String url){ StringBuilder result = new StringBuilder(); try { URL u=new URL(url); HttpsURLConnection huconn=(HttpsURLConnection) u.openConnection(); huconn.setHostnameVerifier(new CustomizedHostnameVerifier result = new StringBuilder(); try { //创建地址对象 URL u=new URL(url); //获取HttpURLConnection链接对象 HttpsURLConnection huconn=(HttpsURLConnection) u.openConnection(); //绕过证书验证,验证主机名和服务器验证方案的匹配是可接受的 huconn.setHostnameVerifier
场景示例: try { URL url = new URL("https://example.com"); HttpsURLConnection conn = (HttpsURLConnection public void connectToServer(String urlString) { try { URL url = new URL(urlString); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.connect(); // 可能会抛出CertificateException (sc.getSocketFactory()); // 打开连接 URL url = new URL(urlString); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.connect(); System.out.println
// 尝试通过HTTPS连接到服务器 URL url = new URL("https://example.com/api"); HttpsURLConnection conn = (HttpsURLConnection // 错误:使用https协议,但端口为非SSL的80端口 URL url = new URL("https://example.com:80/api"); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.connect(); } catch (IOException e :使用https协议并通过443端口(通常用于SSL/TLS)连接 URL url = new URL("https://example.com:443/api"); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.connect(); } catch (IOException e
java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import javax.net.ssl.HttpsURLConnection corpid=" + corpid + "&corpsecret=" + corpsecret; URL u = new URL(url); HttpsURLConnection huconn = (HttpsURLConnection) u.openConnection(); BufferedReader in = null; StringBuilder result = new
Java代码示例 下面是一个使用Java实现HTTPS的TLS/SSL协议的示例代码: import javax.net.ssl.HttpsURLConnection; import java.io.BufferedReader String url = "https://example.com"; // 创建URL对象 URL obj = new URL(url); // 创建HttpsURLConnection 对象 HttpsURLConnection con = (HttpsURLConnection) obj.openConnection(); // 获取服务器返回的证书 in.close(); // 打印服务器返回的数据 System.out.println(response.toString()); } } 该示例代码使用Java中的HttpsURLConnection
import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, null); HttpsURLConnection.setDefaultSSLSocketFactory return true; } }; trustAllHttpsCertificates(); HttpsURLConnection.setDefaultHostnameVerifier
java.security.cert.CertificateException; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory hostname, SSLSession session) { return true; } }; // Install the all-trusting host verifier HttpsURLConnection.setDefaultHostnameVerifier
,String contentType) throws IOException, KeyManagementException, NoSuchAlgorithmException { HttpsURLConnection.setDefaultHostnameVerifier = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory BufferedReader br = null; HttpURLConnection conn = null; try { HttpsURLConnection.setDefaultHostnameVerifier SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory BufferedReader br = null; HttpURLConnection conn = null; try { HttpsURLConnection.setDefaultHostnameVerifier