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请求,包括如何处理SSL证书校验问题。 首先,理解HTTPS的工作原理至关重要。HTTPS基于SSL/TLS协议,它在HTTP层和TCP/IP层之间添加了一个安全层,用于加密数据传输并...
java的get和post请求,获取json的工具类,https时会存在ssl校验的问题,工具会自动去除ssl校验。
本文将详细讲解如何使用Java发送GET和POST请求,以及涉及的HTTPS安全连接。 首先,理解HTTP和HTTPS的区别至关重要。HTTP(超文本传输协议)是一种用于分发超媒体信息的应用层协议,而HTTPS(超文本传输安全协议)是...
通过以上分析,我们可以看到发送HTTPS POST请求的过程涉及到多个关键步骤,包括设置信任管理器、创建SSL上下文、注册SSL Socket工厂、设置超时时间、构建POST请求以及处理响应内容等。这些步骤对于实现安全且高效的...
在使用HttpClient发送POST请求时,我们需要关心两个方面的问题:一是如何忽略证书验证过程,二是如何发送POST请求。对于前者,我们可以使用X509TrustManager来忽略证书验证过程。对于后者,我们可以使用HttpPost对象...
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请求”可能是一个自定义的类,用于简化发送HTTPS POST请求的过程。以下是对这个主题的详细讲解: 1. **HTTPS基础**: - HTTPS是在HTTP上添加了SSL/TLS(Secure Sockets ...
4. **Java HTTPS工具类**: 工具类封装了HTTPS请求的实现细节,包括证书管理、SSL上下文配置等,使得开发者无需深入了解底层实现即可方便地发送HTTPS请求。 5. **SSL配置**: 在Java中,为了支持SSL,需要设置`SSL...
这里我们将深入探讨如何使用Java发送GET和POST请求,以及处理JSON数据。 首先,让我们关注GET请求。GET请求主要用于从服务器获取资源,其参数通常包含在URL中。在Java中,可以使用`HttpURLConnection`类或者第三方...
本文将详细解析如何使用Java实现HTTP和HTTPS的GET与POST请求,并结合提供的类文件名称(HttpsHandler.java、HttpUtil.java、NetUtil.java)探讨可能的实现方式。 首先,`HttpUtil`类通常用于封装HTTP请求的操作。在...
本文将围绕“Java 发送 HTTPS 请求证书问题”这一主题展开讨论,通过对给定文件中的代码示例及操作步骤进行分析,帮助读者理解如何在 Java 中正确配置并发送 HTTPS 请求。 #### 标题:Java 发送 HTTPS 请求证书问题...
接着,使用`DataOutputStream`写入请求参数,最后读取服务器响应。 在`HttpUtils`类中,为了处理HTTPS,可能还需要配置SSL证书,以解决安全套接层(SSL)或传输层安全(TLS)的问题。这包括创建`SSLSocketFactory`...
在上面的代码中,我们实现了doPost方法,该方法将参数转换为字节数组,并调用另一个doPost方法来实现Post请求。 下面是doPost方法的实现代码: ```java private static String doPost(String url, String ctype,...
在这个过程中,我们创建了一个自定义的SSLClient类,绕过了证书验证,然后编写了PostRequestSender类,用于发送POST请求并处理响应。这两个类的结合使得在Java程序中调用HTTPS接口变得更加简单。
总之,这个示例源代码提供了安卓客户端发送POST请求到服务器的基础实现,对于初学者理解网络请求的原理和实践非常有帮助。通过学习和调试这个代码,你可以更好地掌握安卓应用与服务器交互的关键技术。
在Java编程中,进行POST或GET网络请求是常见的任务,主要应用于数据的发送与接收,例如API接口调用、网页抓取等。本篇将详细解释如何使用Java的`httpclient`包来实现这些功能。 首先,我们来看`HttpPostUtil.java`...
对于POST请求,需要先写入请求体,然后读取响应。 ```java connection.connect(); int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = ...
在设置完请求参数后,同样通过HttpClient的execute方法发送请求。 3. 支持http和https:HttpClientUtil需要能够处理HTTP和HTTPS协议。HTTP协议不涉及数据加密,而HTTPS协议在HTTP的基础上加入了SSL/TLS层,提供数据...
总的来说,`HttpUtil` 是一个实用的工具,简化了Java开发中涉及HTTP通信的部分,特别是处理data-form和SSL POST请求,同时考虑到了便捷性和安全性。对于需要进行网络请求的Java项目,它是一个值得考虑的集成组件。