`
隐形的翅膀
  • 浏览: 498361 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 通过 SSL/TLS 发送 Post 请求(无参数)

 
阅读更多
/**
 * 
 */
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发送http/https请求(get/post)代码

    本文将详细讲解如何使用Java发送GET和POST请求,以及涉及的HTTPS安全连接。 首先,理解HTTP和HTTPS的区别至关重要。HTTP(超文本传输协议)是一种用于分发超媒体信息的应用层协议,而HTTPS(超文本传输安全协议)是...

    java支持https的Post请求

    总结起来,Java通过`SSLContext`和`TrustManager`提供了灵活的SSL/TLS策略,允许开发者在必要时调整证书校验。同时,`HttpURLConnection`提供了方便的接口来发送HTTPS POST请求。在实际开发中,应根据具体需求选择...

    https发送post请求

    通过以上分析,我们可以看到发送HTTPS POST请求的过程涉及到多个关键步骤,包括设置信任管理器、创建SSL上下文、注册SSL Socket工厂、设置超时时间、构建POST请求以及处理响应内容等。这些步骤对于实现安全且高效的...

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    在使用HttpClient发送POST请求时,我们需要关心两个方面的问题:一是如何忽略证书验证过程,二是如何发送POST请求。对于前者,我们可以使用X509TrustManager来忽略证书验证过程。对于后者,我们可以使用HttpPost对象...

    Java发 Https请求工具类 支持SSL

    在Java编程中,HTTPS(Hypertext Transfer Protocol Secure)是一种基于HTTP的安全协议,它通过SSL/TLS(Secure Sockets Layer/Transport Layer Security)提供加密处理、服务器身份验证和消息完整性检查,以保护...

    Java Https工具类,Java Https Post请求

    总结来说,`HttpsUtils.java`是一个用于简化Java程序中HTTPS POST请求的工具类,它隐藏了复杂的SSL/TLS配置和HTTP连接管理,使得开发者可以更加专注于业务逻辑。在实际开发中,此类可以帮助提高代码的可读性和可维护...

    java 发送https 请求 证书

    在Java编程中,HTTPS(Hypertext Transfer Protocol Secure)是一种基于HTTP协议的安全通信方式,它通过SSL/TLS协议加密传输数据,确保了网络通信的安全性。当你需要在Java程序中发送HTTPS请求时,可能会遇到证书...

    JAVA 发送http请求工具类

    本文将详细解析如何使用Java实现HTTP和HTTPS的GET与POST请求,并结合提供的类文件名称(HttpsHandler.java、HttpUtil.java、NetUtil.java)探讨可能的实现方式。 首先,`HttpUtil`类通常用于封装HTTP请求的操作。在...

    https支持put get post请求

    在实际应用中,为了确保数据安全,即使HTTPS支持PUT、GET、POST请求,也应该正确配置和使用SSL/TLS,包括安装服务器证书、启用HTTPS强制、处理证书链问题等。同时,对于敏感数据的传输,建议使用POST请求,因为GET...

    JAVA利用HttpClient进行HTTPS接口调用

    在Java中,我们通常通过JSSE(Java Secure Socket Extension)来支持SSL/TLS连接。 在`SSLClient.java`文件中,我们可能会看到配置SSL上下文(SSLContext)的过程。这是设置信任的证书和密钥存储的地方。代码可能...

    HttpClientUtil工具类发送get和post请求,支持http和https,支持发送文件

    HttpClient是Java中用于执行HTTP请求的一个强大库,它提供了丰富的功能,可以方便地进行GET、POST请求,并且能够处理复杂的网络交互,包括发送文件等操作。下面我们将详细讨论HttpClientUtil工具类如何实现这些功能...

    Java实现的Https请求工具类

    对于POST请求,需要先写入请求体,然后读取响应。 ```java connection.connect(); int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = ...

    Https请求工具类,Java实现http请求,https请求

    在上面的代码中,我们实现了doPost方法,该方法将参数转换为字节数组,并调用另一个doPost方法来实现Post请求。 下面是doPost方法的实现代码: ```java private static String doPost(String url, String ctype,...

    请求https post 数据

    这个工具类可能会提供一个静态方法,如`post(String url, Map, String> params)`,用于发送POST请求到指定URL,并携带参数。以下是一些可能的关键步骤: 1. 创建`HttpClient`实例,可能使用`HttpClientBuilder`或`...

    安卓客户端发送POST请求到服务器demo源代码

    本示例提供了一个安卓客户端发送POST请求到服务器的源代码,经测试能够正常工作,确保了数据的双向传输:客户端发送请求,服务器接收并处理,再将响应数据回传给客户端。 首先,我们来看POST请求的基本概念。POST...

    http发送Get和Post请求工具类

    在测试类中,一般会创建一个`HttpUtils`实例,然后调用`sendGet`或`sendPost`方法,传入目标URL和(对于POST请求)参数。测试类的目的是验证工具类的功能是否正常工作,通常会打印服务器返回的响应数据。 `...

    HttpUtil,支持data-form、SSL等

    2. **SSL POST请求(HTTPS)**:HTTPS是HTTP与SSL/TLS(Transport Layer Security/Secure Sockets Layer)的结合,用于提供安全的网络通信。在使用`HttpUtil` 进行SSL POST请求时,它能够处理证书验证、加密和身份...

    java实现读取证书访问https接口

    6. 设置其他HTTP连接参数,如连接超时和读取超时,然后执行GET或POST请求,例如`connection.connect()`。 7. 从连接中读取响应数据,可以通过`BufferedReader`和`InputStreamReader`实现,如`new BufferedReader(new...

    httpclient4.5 绕过ssl认证文件访问

    SSL/TLS是网络安全传输的标准,它通过加密数据来保护网络上的通信,确保信息在传输过程中不被窃取或篡改。通常,当一个应用程序尝试连接到HTTPS网站时,会进行一系列的SSL握手过程,验证服务器的身份并建立安全连接...

Global site tag (gtag.js) - Google Analytics