`
新的开始2015
  • 浏览: 1844 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

ssl 
阅读更多
Java代码  收藏代码
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 请求证书问题...

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

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

    http发送Get和Post请求工具类

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

    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