======Java中的SSL通信初步(1)======
来源:互联网 发布:载软件.net framework 编辑:程序博客网 时间:2024/04/26 05:04
package com.panpass.main;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.UnknownHostException;import javax.net.ssl.HandshakeCompletedEvent;import javax.net.ssl.HandshakeCompletedListener;import javax.net.ssl.SSLSocket;import javax.net.ssl.SSLSocketFactory;//http://blog.csdn.net/eclipsexys/article/details/44495285 LruCache/** * 客户端程序 * @author Administrator */public class HttpsClientTest {private String host = "www.usps.com";private int port = 443;private SSLSocketFactory sslSocketFactory = null;private SSLSocket sslSocket = null;public HttpsClientTest() throws UnknownHostException, IOException {super();sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();long sslStartTime = System.currentTimeMillis();sslSocket = (SSLSocket) sslSocketFactory.createSocket(host,port);long sslEndTime = System.currentTimeMillis();System.out.println("SSL 通信所用时间为:"+(sslEndTime-sslStartTime)+"ms");sslSocket.setEnabledCipherSuites(sslSocket.getEnabledCipherSuites());sslSocket.addHandshakeCompletedListener(new HandshakeCompletedListener() {@Overridepublic void handshakeCompleted(HandshakeCompletedEvent event) {System.out.println("SSL 握手结束");System.out.println("加密套件为:"+event.getCipherSuite());System.out.println("会话为:"+event.getSession());System.out.println("通信对方为:"+event.getSession().getPeerHost()+"端口号:"+event.getSession().getPeerPort());}});}public void communicate() throws IOException {StringBuffer sb = new StringBuffer("GET http://"+host+"/HTTP/1.1\r\n");sb.append("Host:"+host+"\r\n");sb.append("Accept: */*\r\n");sb.append("\r\n");// 发出Http请求OutputStream os = sslSocket.getOutputStream();os.write(sb.toString().getBytes()); // 接受响应InputStream is = sslSocket.getInputStream();ByteArrayOutputStream abos = new ByteArrayOutputStream();byte[] bytes = new byte[1024];int len = -1;while ((len = is.read(bytes))!= -1) {abos.write(bytes, 0, len);}System.out.println(new String(abos.toByteArray()));sslSocket.close();}public static void main(String[] args) throws UnknownHostException, IOException {new HttpsClientTest().communicate();}}
输出结果:
SSL 通信所用时间为:364ms
SSL 握手结束
加密套件为:TLS_RSA_WITH_AES_128_CBC_SHA
会话为:[Session-1, TLS_RSA_WITH_AES_128_CBC_SHA]
通信对方为:www.usps.com端口号:443
HTTP/1.0 400 Bad Request
Server: AkamaiGHost
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 216
Expires: Thu, 26 Mar 2015 04:08:58 GMT
Date: Thu, 26 Mar 2015 04:08:58 GMT
Connection: close
<HTML><HEAD>
<TITLE>Bad Request</TITLE>
</HEAD><BODY>
<H1>Bad Request</H1>
Your browser sent a request that this server could not understand.<P>
Reference #7.9a5732b8.1427342938.0
</BODY>
</HTML>
0 0
- ======Java中的SSL通信初步(1)======
- java中的== equals以及hashcode初步分析
- openssl_context = OpenSSL.SSL.Context(OpenSSL.SSL.TLSv1_METHOD)
- 二分的初步= =
- OkHttpUtils: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb8f02e68: Failure in S
- 黑马程序员==》java基础 函数的初步了解
- MAC 安装wget --with-ssl=openssl
- java中的"=="
- java中的==
- configure: error: --with-ssl=openssl was given, but SSL is not available.
- 类似 java -Djavax.net.debug=SSL,handshake,data,trustmanager MyApp 如何在Eclipse下运行
- 类似 java -Djavax.net.debug=SSL,handshake,data,trustmanager MyApp 如何在Eclipse下运行
- SSL + WS-Security = Web Service安全保障
- SSL + WS-Security = Web Service安全保障
- SSL + WS-Security = Web Service安全保障
- UIWebView加载HTTPS站点出现NSURLErrorDomain code=-1202 SSL
- SSL + WS-Security = Web Service安全保障
- 解决<dl-ssl.google.com> != <www.google.com>
- Topcoder srm 653 div.2 500 - RockPaperScissorsMagicEasy(DP)
- Spring MVC 学习笔记 json格式的输入和输出
- Ural 2040 Palindromes and Super Abilities 2 回文自动机
- nginx负载均衡和lvs负载均衡的比较分析
- Excel冻结首行/首列
- ======Java中的SSL通信初步(1)======
- 通过拖动鼠标进行滚动的js插件
- MySQL数据库基本操作
- 第三周项目五数组作数据成员(2)
- cocostudio骨骼动画 -- 原点
- 我的博客开通了,这将是我的一个成长记录
- flash和图片开源库
- Android Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE解决办法
- 百度研发工程师2015深圳笔试卷