文档章节

https Java客户端

二两豆腐
 二两豆腐
发布于 2015/12/29 10:51
字数 190
阅读 70
收藏 3
package com.wtf.demo.socket;

import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.io.*;

/**
 * Created by wtf on 2015/12/28.
 */
public class HTTPSClient {

    public static void main(String[] args) {
        int port = 443;
        String host = "sp0.baidu.com";

        SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
        SSLSocket socket  = null;
        try {
            socket = (SSLSocket)factory.createSocket(host,port);

            //启用密码组
            String[] supportedCipherSuites = socket.getSupportedCipherSuites();
            socket.setEnabledCipherSuites(supportedCipherSuites);

            Writer out = new OutputStreamWriter(socket.getOutputStream(),"UTF-8");

            //https在get中需要完全的URL
            out.write("GET https://" + host + "/ HTTP/1.1\r\n");
            out.write("Host:" + host + "\r\n");
            out.write("\r\n");
            out.flush();


            //读取相应

            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            //读取首部
            String s;
            while(!(s=reader.readLine()).equals("")){
                System.out.println(s);
            }
            System.out.println();

            //读取长度
            String contentLength = reader.readLine();
            int length = Integer.MAX_VALUE;
            try{
                length = Integer.parseInt(contentLength.trim(),16);
            }catch (NumberFormatException e){
               // e.printStackTrace();
                //这个服务器在响应题的第一行没有发送content-length
            }

            int c ;
            int i =0 ;

            while ((c= reader.read())!=-1 && i++ <length){
                System.out.write(c);
            }

            System.out.println();

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try{
                if(socket!=null){
                  socket.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

}


© 著作权归作者所有

共有 人打赏支持
二两豆腐
粉丝 21
博文 94
码字总数 79225
作品 0
朝阳
高级程序员
私信 提问
java RMI 源码总结(个人理解)

明天早上详细写下两个过程: 1、初始化过程(服务器) 2、客户端调用过程(包括客户端流程、调用服务端流程、返回客户端流程) 当客户端通过RMI注册表找到一个远程接口的时候,所得到的其实是...

Java搬砖工程师
11/16
0
0
HTTPS 和 Java 的融合问题

HTTPS 协议是一套完善的标准,它能确保网络连接的安全。要理解这套协议如何运作并非难事,而对应的 RFC 文档 早在 2000 年就有了。 尽管 HTTPS 的应用已经如此广泛,你仍然可以遇到一些软件并...

oschina
2016/11/01
3.3K
13
Memcached Java 客户端 2.6.1 发布

Memcached是被广泛使用的分布式缓存技术。不同的语言有不同的Memcached客户端程序,对于Java客户端来说,首推Memcached Java Client(http://github.com/gwhalin/Memcached-Java-Client )。...

小编辑
2011/06/27
3.8K
1
thrift rpc js使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/byxdaz/article/details/84871376 一、thrift js使用方式 使用thrift js时,PRotocol需要使用TJSONPRotocol/T...

byxdaz
12/07
0
0
Sharding-JDBC 1.3.1 发布,当当 JDBC 增强驱动

Sharding-JDBC 1.3.1 发布了,Sharding-JDBC是当当应用框架ddframe中,从关系型数据库模块dd-rdb中分离出来的数据库水平分片框架,实现透明化数据库分库分表 访问。Sharding-JDBC是继dubbox和...

淡漠悠然
2016/06/28
3K
6

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

yepanl
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部