/**
*
*/
package com.company.common.mail;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
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;
import com.company.TestLogger;
public class Test {
private static TestLogger logger = TestLogger.getLogger(TrustSSL.class);
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;
}
}
public static String sendHttps(String url) throws Exception {
InputStream in = null;
OutputStream out = null;
String returnValue = "";
try {
//SSLContext sc = SSLContext.getInstance("SSL");
System.setProperty("https.protocols", "TLSv1");
SSLContext sc = SSLContext.getInstance("TLSv1");
sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
URL console = new URL(url);
HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
conn.setSSLSocketFactory(sc.getSocketFactory());
conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
conn.connect();
InputStream is = conn.getInputStream();
DataInputStream indata = new DataInputStream(is);
returnValue = indata.readLine();
conn.disconnect();
} catch (ConnectException e) {
logger.logError(e.getMessage());
logger.logError(e);
throw e;
} catch (IOException e) {
logger.logError(e.getMessage());
logger.logError(e);
throw e;
} finally {
try {
in.close();
} catch (Exception e) {
}
try {
out.close();
} catch (Exception e) {
}
}
return returnValue;
}
public static void main(String[] args) throws Exception {
System.out.println(sendHttps("https://test.com/get.do"));
}
}
分享到:
相关推荐
本文将详细讲解如何使用Java发送GET和POST请求,以及涉及的HTTPS安全连接。 首先,理解HTTP和HTTPS的区别至关重要。HTTP(超文本传输协议)是一种用于分发超媒体信息的应用层协议,而HTTPS(超文本传输安全协议)是...
总结起来,Java通过`SSLContext`和`TrustManager`提供了灵活的SSL/TLS策略,允许开发者在必要时调整证书校验。同时,`HttpURLConnection`提供了方便的接口来发送HTTPS POST请求。在实际开发中,应根据具体需求选择...
通过以上分析,我们可以看到发送HTTPS POST请求的过程涉及到多个关键步骤,包括设置信任管理器、创建SSL上下文、注册SSL Socket工厂、设置超时时间、构建POST请求以及处理响应内容等。这些步骤对于实现安全且高效的...
在使用HttpClient发送POST请求时,我们需要关心两个方面的问题:一是如何忽略证书验证过程,二是如何发送POST请求。对于前者,我们可以使用X509TrustManager来忽略证书验证过程。对于后者,我们可以使用HttpPost对象...
在Java编程中,HTTPS(Hypertext Transfer Protocol Secure)是一种基于HTTP的安全协议,它通过SSL/TLS(Secure Sockets Layer/Transport Layer Security)提供加密处理、服务器身份验证和消息完整性检查,以保护...
总结来说,`HttpsUtils.java`是一个用于简化Java程序中HTTPS POST请求的工具类,它隐藏了复杂的SSL/TLS配置和HTTP连接管理,使得开发者可以更加专注于业务逻辑。在实际开发中,此类可以帮助提高代码的可读性和可维护...
在Java编程中,HTTPS(Hypertext Transfer Protocol Secure)是一种基于HTTP协议的安全通信方式,它通过SSL/TLS协议加密传输数据,确保了网络通信的安全性。当你需要在Java程序中发送HTTPS请求时,可能会遇到证书...
本文将详细解析如何使用Java实现HTTP和HTTPS的GET与POST请求,并结合提供的类文件名称(HttpsHandler.java、HttpUtil.java、NetUtil.java)探讨可能的实现方式。 首先,`HttpUtil`类通常用于封装HTTP请求的操作。在...
在实际应用中,为了确保数据安全,即使HTTPS支持PUT、GET、POST请求,也应该正确配置和使用SSL/TLS,包括安装服务器证书、启用HTTPS强制、处理证书链问题等。同时,对于敏感数据的传输,建议使用POST请求,因为GET...
在Java中,我们通常通过JSSE(Java Secure Socket Extension)来支持SSL/TLS连接。 在`SSLClient.java`文件中,我们可能会看到配置SSL上下文(SSLContext)的过程。这是设置信任的证书和密钥存储的地方。代码可能...
HttpClient是Java中用于执行HTTP请求的一个强大库,它提供了丰富的功能,可以方便地进行GET、POST请求,并且能够处理复杂的网络交互,包括发送文件等操作。下面我们将详细讨论HttpClientUtil工具类如何实现这些功能...
对于POST请求,需要先写入请求体,然后读取响应。 ```java connection.connect(); int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = ...
在上面的代码中,我们实现了doPost方法,该方法将参数转换为字节数组,并调用另一个doPost方法来实现Post请求。 下面是doPost方法的实现代码: ```java private static String doPost(String url, String ctype,...
这个工具类可能会提供一个静态方法,如`post(String url, Map, String> params)`,用于发送POST请求到指定URL,并携带参数。以下是一些可能的关键步骤: 1. 创建`HttpClient`实例,可能使用`HttpClientBuilder`或`...
本示例提供了一个安卓客户端发送POST请求到服务器的源代码,经测试能够正常工作,确保了数据的双向传输:客户端发送请求,服务器接收并处理,再将响应数据回传给客户端。 首先,我们来看POST请求的基本概念。POST...
在测试类中,一般会创建一个`HttpUtils`实例,然后调用`sendGet`或`sendPost`方法,传入目标URL和(对于POST请求)参数。测试类的目的是验证工具类的功能是否正常工作,通常会打印服务器返回的响应数据。 `...
6. 设置其他HTTP连接参数,如连接超时和读取超时,然后执行GET或POST请求,例如`connection.connect()`。 7. 从连接中读取响应数据,可以通过`BufferedReader`和`InputStreamReader`实现,如`new BufferedReader(new...
SSL/TLS是网络安全传输的标准,它通过加密数据来保护网络上的通信,确保信息在传输过程中不被窃取或篡改。通常,当一个应用程序尝试连接到HTTPS网站时,会进行一系列的SSL握手过程,验证服务器的身份并建立安全连接...
为了解决这个问题,HTTPS(安全超文本传输协议)应运而生,它通过SSL/TLS(安全套接层/传输层安全)协议来加密通信,保证数据传输的安全性。 当一个网站从HTTP升级到HTTPS时,客户端(如浏览器)必须能够正确处理...