import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
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 org.apache.commons.lang.StringUtils;
public class GetSessionIDUtil {
public static String getSessionId(String postData)
throws NoSuchAlgorithmException, KeyManagementException {
String sessionId = "";
String createSessionURL = "https://hlixgr244.apac.nsroot.net/CONAV/CBOLSessionManagement/createsession";
try {
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs,
String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs,
String authType) {
}
} };
HttpsURLConnection
.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String string, SSLSession ssls) {
return true;
}
});
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection
.setDefaultSSLSocketFactory(sc.getSocketFactory());
URL url = new URL(createSessionURL);
HttpURLConnection connect = (HttpURLConnection) url .openConnection();
connect.setDoOutput(true);
DataOutputStream out = new DataOutputStream(connect .getOutputStream());
out.writeBytes(postData);
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader( connect.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
// sessionId += "n" + line;
System.out.println("page info ===> " + line);
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(sessionId + "s");
return sessionId;
}
public static void main(String[] as) throws KeyManagementException,
NoSuchAlgorithmException, UnsupportedEncodingException {
String GRBNumber = "004195137";
String PageID = "HomePage";
String Initial_Request_timestamp = "1317023781100";
String ICHANNEL_ID = "Default";
String DIGITAL_SIGNATURE = "X6FYQO2Gy2rJ1ir5dVUcyvRFqMoGDYzymy3EfzE0Hv/09A+zlxtKGk4mJRvRhJH0+GtSqQUhzSHFauQeW3ZQ9YqT673JmDapYlh3X0sVdPCcUJLqKIHRiqz91HRTxTcm7y7R+J66+awiKHOhTH9hHxzWf6W5n8RvI2N9cfZDJ9E=";
DIGITAL_SIGNATURE=StringUtils.replace(DIGITAL_SIGNATURE, "+", "%2B");
String postData ="GRBNumber=" + GRBNumber + "&PageID=" + PageID
+ "&Initial_Request_timestamp=" + Initial_Request_timestamp
+ "&ICHANNEL_ID=" + ICHANNEL_ID + "&DIGITAL_SIGNATURE="
+ DIGITAL_SIGNATURE;
// postData = URLEncoder.encode(postData);
System.out.println(postData);
getSessionId(postData);
}
}
分享到:
相关推荐
本文将详细介绍如何使用Apache HttpClient库进行HTTP远程接口调用,并讲解如何在Java中跳过SSL证书校验。 HttpClient是Apache提供的一款强大的HTTP客户端库,支持多种HTTP协议版本和功能,包括GET、POST请求、...
如果忽视SSL证书,虽然可以绕过证书验证,但这样做会暴露用户的数据安全风险,可能导致数据泄露或被篡改。 在服务器增加代理的情况下,代理服务器充当客户端和目标服务器之间的中介。使用代理有多种原因,包括负载...
4. **执行HTTP请求**:现在,你可以使用这个HttpClient实例执行HTTPS请求,它将跳过正常的SSL验证过程。 ```java import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import ...
这是因为默认情况下,HttpClient会对HTTPS的服务器证书进行严格的验证,但为了简化示例或在测试环境中,我们可能希望跳过这一过程。以下是SSLClient类的代码: ```java import java.security.cert....
本文将详细介绍如何使用Java和HttpClient来模拟HTTPS文件上传,并跳过SSL验证。 首先,我们需要导入必要的依赖。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache....
1. **证书管理**:Unirest支持SSL/TLS连接,可以配置信任的证书或忽略证书验证。 2. **多部分上传**:可以使用Unirest上传文件或者进行多部分表单数据的提交。 3. **自定义拦截器**:可以添加自定义的拦截器来处理...
总的来说,这个示例展示了如何在Java中使用HttpClient调用HTTPS服务,同时跳过SSL证书验证。然而,这样做存在安全风险,因为任何中间人攻击者都可以拦截并篡改通信。在生产环境中,你应该始终使用受信任的证书并启用...
// 表示是POST请求 // 设置其他请求头,如Content-Type等 OutputStream out = conn.getOutputStream(); // 发送POST数据 out.write(yourData.getBytes()); out.flush(); out.close(); int responseCode = ...
对于51job和智联招聘这样的网站,登录通常涉及POST请求,携带用户名、密码以及可能的其他安全参数(如设备标识、session_key等)。 其次,**验证码破解**是一个复杂的过程,因为它是网站用来防止机器人或爬虫自动...
服务器端需要支持这种重试机制,能够识别重复的分片并跳过。 6. **组合文件**: 当所有分片都上传完毕后,服务器端需要将这些分片按照编号顺序组合成原始文件。可以使用`RandomAccessFile`类在磁盘上拼接这些分片...
但在某些情况下,例如在测试环境或内部开发中,我们可能需要跳过这一验证步骤。在Java中,这可以通过自定义`TrustManager`实现来完成。在提供的代码示例中,应该有一个类或方法,它创建了一个新的`SSLContext`实例,...
在Java中,我们通常使用`java.net.HttpURLConnection`或者`org.apache.http.client.HttpClient`(如Apache HttpClient库)来与HTTP服务器进行通信,发起GET或POST请求,获取响应数据。 ### 2. 多线程 多线程是Java...
这样做可以跳过SSL证书的校验,从而允许程序继续执行,但请注意,在生产环境中,通常不推荐这么做,因为这样会降低安全性。在初始化了`SSLContext`之后,通过调用`getSocketFactory()`方法获取`SSLSocketFactory`...
然而,许多网站为了保护用户隐私和防止恶意爬取,会设置登录验证机制,新浪微博就是其中之一。本篇将详细介绍一个解决“需要登录才能抓取的新浪微博爬虫例子”,帮助你理解和构建类似的爬虫程序。 首先,我们需要...
2. **创建Servlet**:创建一个新的Servlet,重写`doPost`方法,因为文件上传通常通过POST请求进行。 3. **初始化SmartUpload对象**:在`doPost`方法中,实例化`SmartUpload`对象,并调用其`initialize`方法,传入`...
在实际应用中,我们还需要处理证书验证、错误处理、POST请求、请求头设置等更复杂的情况。 对于服务端,HTTPS的实现通常涉及SSL/TLS证书、服务器配置以及HTTP服务器软件。例如,使用Apache HTTP Server或Nginx,...
如果一致,说明用户已登录,可以跳过登录界面,直接展示已登录的状态。 5. **验证用户身份**: 为了确保安全,通常还需要验证从 Cookie 中读取的用户名是否有效。这可能涉及数据库查询或与服务器端的其他验证机制...
如果验证失败,JSF将跳过后续阶段并显示错误消息。 4. **更新模型值阶段(Update Model Values)**:如果所有验证都通过,JSF会将当前UI组件的值更新到应用程序模型中。这意味着模型对象的属性将被设置为用户输入的...