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

java 通过 SSL 发送 Post 请求(有参数)

 
阅读更多

package server.admin.login;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

import java.net.URL;
import java.net.URLEncoder;
import java.security.cert.CertificateException;
import java.security.cert.CertificateExpiredException;
import java.security.cert.CertificateNotYetValidException;
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.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Logger; 


public class Test {
	
	public static Logger log=Logger.getLogger("Test.class");

	public static SSLSocketFactory init() throws Exception {

		class MyX509TrustManager implements X509TrustManager {
			
			public MyX509TrustManager() throws Exception {
				// do nothing
			}

			@Override
			public void checkClientTrusted(X509Certificate[] chain,
					String authType) throws CertificateException {
				
			}

			@Override
			public void checkServerTrusted(X509Certificate[] chain,
					String authType) throws CertificateException {
				
                /*
				log.info("authType is " + authType);  
				log.info("cert issuers");  
				
				try{
	                for (int i = 0; i < chain.length; i++) {  
	                	log.info("\t" + chain[i].getIssuerX500Principal().getName());  
	                	log.info("\t" + chain[i].getIssuerDN().getName()); 
	                	chain[i].checkValidity();
	                } 
				}catch(CertificateExpiredException ex){
					log.error("checkDate: Certificate has expired");	
				}catch(CertificateNotYetValidException yet){
					log.error("checkDate: Certificate is not yet valid");
				}catch(Exception ee){
					log.error("Error: "+ee.getMessage());
				}*/

			}

			@Override
			public X509Certificate[] getAcceptedIssuers() {
				return new X509Certificate[] {};
			}
		}
		TrustManager[] tm = { new MyX509TrustManager() };
		
		System.setProperty("https.protocols", "TLSv1");
		SSLContext sslContext = SSLContext.getInstance("TLSv1","SunJSSE");
		sslContext.init(null, tm, new java.security.SecureRandom());
		SSLSocketFactory ssf = sslContext.getSocketFactory();
		
		return ssf;
	}
	
	/**
	 * 
	 * @param POST_URL
	 * @param token
	 * @return
	 * @throws IOException
	 */
	private static boolean sendHttpsPost(String POST_URL,String token)throws IOException{
		
		boolean returnVal=false;
		 
		URL myURL = new URL(POST_URL);
        
		HttpsURLConnection con = (HttpsURLConnection) myURL.openConnection();
		
		HostnameVerifier hostNameVerify = new HostnameVerifier()
		{
			/**
			 * Always return true
			 */
			public boolean verify(String urlHostName, SSLSession session)
			{
				return true;
			}
		};
		//HttpsURLConnection.setDefaultHostnameVerifier(hostNameVerify);
		con.setHostnameVerifier(hostNameVerify);
		try {
			con.setSSLSocketFactory(init());
		} catch (Exception e1) {
			// throw out the exception
			throw new IOException(e1);
		}
		
		con.setDoOutput(true);    
		con.setDoInput(true);    
		con.setRequestMethod("POST");    
		con.setUseCaches(false);    
		con.setInstanceFollowRedirects(true);    
		con.setRequestProperty("Content-Type "," application/x-www-form-urlencoded ");    

		con.connect(); 
		
		DataOutputStream out = new DataOutputStream(con.getOutputStream());    

		String content = "authenticityToken="+ URLEncoder.encode(token, "utf-8");    
		
		out.writeBytes(content);    

		out.flush();    
		out.close(); 
	
		BufferedReader reader = new BufferedReader(new InputStreamReader(    
		con.getInputStream()));    
		String line;    
				
		while ((line = reader.readLine()) != null) {    
			
			if(line.equalsIgnoreCase("ok"))
				returnVal=true;
			else
				returnVal=false;
		}    
		reader.close();    
		con.disconnect();
	
		
		return returnVal;
	}
	public static boolean readContentFromPost(String POST_URL,String token) throws IOException {    
		 
	        TestLogger.setLog4jLogger(log);
	        
	        POST_URL=POST_URL+"validate";
	        
	        return sendHttpsPost(POST_URL,token);
	}

	


}
分享到:
评论

相关推荐

    java支持https的Post请求

    本文将详细介绍如何在Java中实现支持HTTPS的POST请求,包括如何处理SSL证书校验问题。 首先,理解HTTPS的工作原理至关重要。HTTPS基于SSL/TLS协议,它在HTTP层和TCP/IP层之间添加了一个安全层,用于加密数据传输并...

    https的get和post请求,去除ssl校验的java工具类

    java的get和post请求,获取json的工具类,https时会存在ssl校验的问题,工具会自动去除ssl校验。

    java发送http/https请求(get/post)代码

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

    https发送post请求

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

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

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

    java 发送https 请求 证书

    3. **发送HTTPS请求**:现在你可以使用HttpClient发送GET或POST请求了: ```java HttpGet request = new HttpGet("https://your.server.com/path"); HttpResponse response = httpClient.execute(request); int ...

    Java Https工具类,Java Https Post请求

    这个“Java Https工具类,Java Https Post请求”可能是一个自定义的类,用于简化发送HTTPS POST请求的过程。以下是对这个主题的详细讲解: 1. **HTTPS基础**: - HTTPS是在HTTP上添加了SSL/TLS(Secure Sockets ...

    Java发 Https请求工具类 支持SSL

    4. **Java HTTPS工具类**: 工具类封装了HTTPS请求的实现细节,包括证书管理、SSL上下文配置等,使得开发者无需深入了解底层实现即可方便地发送HTTPS请求。 5. **SSL配置**: 在Java中,为了支持SSL,需要设置`SSL...

    java发送http/https请求(get/post)Demo,亲测可用

    这里我们将深入探讨如何使用Java发送GET和POST请求,以及处理JSON数据。 首先,让我们关注GET请求。GET请求主要用于从服务器获取资源,其参数通常包含在URL中。在Java中,可以使用`HttpURLConnection`类或者第三方...

    JAVA 发送http请求工具类

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

    Java发https请求证书问题

    本文将围绕“Java 发送 HTTPS 请求证书问题”这一主题展开讨论,通过对给定文件中的代码示例及操作步骤进行分析,帮助读者理解如何在 Java 中正确配置并发送 HTTPS 请求。 #### 标题:Java 发送 HTTPS 请求证书问题...

    http发送Get和Post请求工具类

    接着,使用`DataOutputStream`写入请求参数,最后读取服务器响应。 在`HttpUtils`类中,为了处理HTTPS,可能还需要配置SSL证书,以解决安全套接层(SSL)或传输层安全(TLS)的问题。这包括创建`SSLSocketFactory`...

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

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

    JAVA利用HttpClient进行POST请求(HTTPS)实例

    在这个过程中,我们创建了一个自定义的SSLClient类,绕过了证书验证,然后编写了PostRequestSender类,用于发送POST请求并处理响应。这两个类的结合使得在Java程序中调用HTTPS接口变得更加简单。

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

    总之,这个示例源代码提供了安卓客户端发送POST请求到服务器的基础实现,对于初学者理解网络请求的原理和实践非常有帮助。通过学习和调试这个代码,你可以更好地掌握安卓应用与服务器交互的关键技术。

    java进行POST或者GET请求

    在Java编程中,进行POST或GET网络请求是常见的任务,主要应用于数据的发送与接收,例如API接口调用、网页抓取等。本篇将详细解释如何使用Java的`httpclient`包来实现这些功能。 首先,我们来看`HttpPostUtil.java`...

    Java实现的Https请求工具类

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

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

    在设置完请求参数后,同样通过HttpClient的execute方法发送请求。 3. 支持http和https:HttpClientUtil需要能够处理HTTP和HTTPS协议。HTTP协议不涉及数据加密,而HTTPS协议在HTTP的基础上加入了SSL/TLS层,提供数据...

    HttpUtil,支持data-form、SSL等

    总的来说,`HttpUtil` 是一个实用的工具,简化了Java开发中涉及HTTP通信的部分,特别是处理data-form和SSL POST请求,同时考虑到了便捷性和安全性。对于需要进行网络请求的Java项目,它是一个值得考虑的集成组件。

Global site tag (gtag.js) - Google Analytics