当前位置:首页 » 编程语言 » 12306java

12306java

发布时间: 2025-03-10 09:52:39

‘壹’ 请教java尝试模拟登录12306时遇到的一个问题

首先12306网站前缀为“https://” 表明是用SSL加密
用HttpClient去模拟发送请求时,对于URL用为“https”时,先要解决证书问题,有两种解决方案:
在查找相关资料时,对于这种方法有点麻烦,最后就没有去尝试,有兴趣的朋友可以试试
扩展HttpClient 类实现自动接受证书,因为这种方法自动接收所有证书,因此存在一定的安全问题,所以在使用这种方法前请仔细考虑您的系统的安全需求。
具体的步骤如下:
•提供一个自定义的socket factory (test.MySecureProtocolSocketFactory )。这个自定义的类必须实现接口
org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory ,在实现接口的类中调用自定义的
X509TrustManager(test.MyX509TrustManager)
•创建一个org.apache.commons.httpclient.protocol.Protocol 的实例,指定协议名称和默认的端口号
Protocol myhttps = new Protocol("https", new MySecureProtocolSocketFactory (), 443);
•注册刚才创建的https 协议对象
Protocol.registerProtocol("https ", myhttps);
具体代码如下:
1 package org.study.meteor.ticket.util;
2
3 import java.io.IOException;
4 import java.net.InetAddress;
5 import java.net.InetSocketAddress;
6 import java.net.Socket;
7 import java.net.SocketAddress;
8 import java.net.UnknownHostException;
9 import java.security.KeyManagementException;
10 import java.security.NoSuchAlgorithmException;
11 import java.security.cert.CertificateException;
12 import java.security.cert.X509Certificate;
13
14 import javax.net.SocketFactory;
15 import javax.net.ssl.SSLContext;
16 import javax.net.ssl.TrustManager;
17 import javax.net.ssl.X509TrustManager;
18
19 import org.apache.commons.httpclient.ConnectTimeoutException;
20 import org.apache.commons.httpclient.params.HttpConnectionParams;
21 import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;
22
23 /**
24 * MySecureProtocolSocketFactory.java.java Create on 2012-9-26下午1:15:03
25 *
26 *
27 * Copyright (c) 2012 by MTA.
28 *
29 * @author lmeteor
30 * @Email [email protected]
31 * @description 自定义的socket factory 实现自动接受证书
32 * @version 1.0
33 */
34 public class MySecureProtocolSocketFactory implements
35 SecureProtocolSocketFactory
36 {
37
38 private SSLContext sslcontext = null;
39
40 private SSLContext createSSLContext()
41 {
42 SSLContext sslcontext = null;
43 try
44 {
45 sslcontext = SSLContext.getInstance("SSL");
46 sslcontext.init(null, new TrustManager[]
47 { new TrustAnyTrustManager() }, new java.security.SecureRandom());
48 }
49 catch (NoSuchAlgorithmException e)
50 {
51 e.printStackTrace();
52 }
53 catch (KeyManagementException e)
54 {
55 e.printStackTrace();
56 }
57 return sslcontext;
58 }
59
60 private SSLContext getSSLContext()
61 {
62 if (this.sslcontext == null)
63 {
64 this.sslcontext = createSSLContext();
65 }
66 return this.sslcontext;
67 }
68
69 public Socket createSocket(Socket socket, String host, int port,
70 boolean autoClose) throws IOException, UnknownHostException
71 {
72 return getSSLContext().getSocketFactory().createSocket(socket, host,
73 port, autoClose);
74 }
75
76 public Socket createSocket(String host, int port) throws IOException,
77 UnknownHostException
78 {
79 return getSSLContext().getSocketFactory().createSocket(host, port);
80 }
81
82 public Socket createSocket(String host, int port, InetAddress clientHost,
83 int clientPort) throws IOException, UnknownHostException
84 {
85 return getSSLContext().getSocketFactory().createSocket(host, port,
86 clientHost, clientPort);
87 }
88
89 public Socket createSocket(String host, int port, InetAddress localAddress,
90 int localPort, HttpConnectionParams params) throws IOException,
91 UnknownHostException, ConnectTimeoutException
92 {
93 if (params == null)
94 {
95 throw new IllegalArgumentException("Parameters may not be null");
96 }
97 int timeout = params.getConnectionTimeout();
98 SocketFactory socketfactory = getSSLContext().getSocketFactory();
99 if (timeout == 0)
100 {
101 return socketfactory.createSocket(host, port, localAddress,
102 localPort);
103 }
104 else
105 {
106 Socket socket = socketfactory.createSocket();
107 SocketAddress localaddr = new InetSocketAddress(localAddress,
108 localPort);
109 SocketAddress remoteaddr = new InetSocketAddress(host, port);
110 socket.bind(localaddr);
111 socket.connect(remoteaddr, timeout);
112 return socket;
113 }
114 }
115
116 // 自定义私有类
117 private static class TrustAnyTrustManager implements X509TrustManager
118 {
119
120 public void checkClientTrusted(X509Certificate[] chain, String authType)
121 throws CertificateException
122 {
123 }
124
125 public void checkServerTrusted(X509Certificate[] chain, String authType)
126 throws CertificateException
127 {
128 }
129
130 public X509Certificate[] getAcceptedIssuers()
131 {
132 return new X509Certificate[]
133 {};
134 }
135 }
136 }

‘贰’ 学Java的人太多了,现在学Java还好找工作吗

互联网行业是一个高速运转的行业,我们这个时代可以说是一个互联网的时代,不知不觉,你会发现,一切行业和事物都能和网络沾上边。作为IT开发中一直打持久战的职业,现在学Java还好找工作吗?
Java工程师在中国已经存在多年,虽然发展市场广阔,企业对Java开发人才的需求量非常大,但是我国的Java开发人才依然稀缺。根据职友集数据显示,北京、上海、深圳、杭州、广州等一线城市Java招聘需求量均过万,其中北京达到了48021个职位,上海达到了30332个职位,人才需求量非常大。并且全国Java平均工资:¥ 12330/月,随着工作年限的增加,工资也是一涨再涨。
所以说目前学Java还是比较有前途的。
据专家预计,2019年,我国Java专业人才将达百万缺口,培养Java人才是当务之急。Java工程师无疑是互联网时代开发行业的中流砥柱,优厚的薪资待遇也吸引着很多人去学习。
互联网发展带动软件行业的发展,Java开发也随之迅速发展,并得到了良好的市场回应;国家政策不断助力Java开发工程师相关行业的发展,国家提供大力度经济扶持,工信部等八部委投资4000亿元建设基站。
Java语言简单易学,Java 技术的特点是卓越的通用性、高效性、平台移植性和安全性,Java语言开发程序比较方便,可以轻松实现很多强大的功能,拥有全球最大的开发者专业社群,还可以撰写跨平台应用软件的面向对象的程序设计语言。
Java语言广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,受到各个行业的欢迎。
整体来说,Java工程师的就业形势依然大好。很多学习Java技能提升的年轻人,经过自己的努力都能轻松拿到8K左右的月薪,甚至破万。很多人经过几年的积累,月薪能达到2W以上。有些人也在后期转行升职架构、成为技术大牛等,年薪非常丰厚。

热点内容
抽象接口php 发布:2025-03-10 15:09:14 浏览:803
tomcat配置ip地址访问 发布:2025-03-10 14:54:54 浏览:689
注册淘宝密码多少 发布:2025-03-10 14:49:03 浏览:558
文件上传设备 发布:2025-03-10 14:47:47 浏览:498
江西l2tp服务器托管云服务器 发布:2025-03-10 14:47:38 浏览:885
微信如何给钱包设置手势密码 发布:2025-03-10 14:46:55 浏览:229
江苏服务器如何 发布:2025-03-10 14:46:17 浏览:179
可编程交直流电源 发布:2025-03-10 14:40:19 浏览:569
c语言编程软件安装教程 发布:2025-03-10 14:20:01 浏览:85
java判断变量类型 发布:2025-03-10 14:19:50 浏览:578