文档章节

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();
            }
        }
    }

}


© 著作权归作者所有

共有 人打赏支持
二两豆腐
粉丝 20
博文 92
码字总数 77029
作品 0
朝阳
高级程序员
Elasticsearch入门实践

一. 系统环境 操作系统:CentOS release 6.8 (Final) ES版本:6.1.1 二. 安装 先确认安装了Java运行时环境: 解压ES压缩包: 三. 启动 1. 启动ES单节点 当然,对于在后台以守护进程模式运行的...

哲别0
06/06
0
0
分别使用Java IO、NIO、Netty实现的一个Echo Server示例

分别使用Java IO、Java NIO、Netty来实现一个简单的EchoServer(即原样返回客户端的输入信息)。 Java IO int port = 9000;ServerSocket ss = new ServerSocket(port);while (true) {final S...

zgw06629
2015/05/24
0
0
配置Impala支持JDBC(翻译)

配置Impala支持JDBC Impala支持JDBC集成。通过使用 JDBC 驱动,你编写的 Java 程序、BI应用、或类似的使用 JDBC 访问不同数据库产品的工具,可以访问 Impala。建立到 Impala 的 JDBC 连接包括...

weiqingbin
2013/12/17
0
0
Netty(三) 什么是 TCP 拆、粘包?如何解决?

前言 记得前段时间我们生产上的一个网关出现了故障。 这个网关逻辑非常简单,就是接收客户端的请求然后解析报文最后发送短信。 但这个请求并不是常见的 HTTP ,而是利用 Netty 自定义的协议。...

crossoverJie
08/06
0
0
初识TomCat之1——Java体系理解

一、前言 TomCat作为一款由Java语言所开发的Web Container,在很多应用场景中经常遇到,其特点也符合Java语言“一次编译到处使用”的优势,在介绍TomCat之前,首先需要对Java的技术体系有一定...

qiao645
06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

异步化,高并发大杀器

今天来聊聊如何让项目异步化的一些事。 在进入正文之前,顺便给大家推荐一个Java架构方面的交流学习群:698581634,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分...

Java大蜗牛
8分钟前
0
0
织梦dedecms安全设置

网站本身做好防范: 1、修改默认后台名。 打开网站根目录,找到[dede],这个文件夹就是后台的路径,可以随意修改,比如修改为[adminbuy],此时后台登陆的路径为:http://www.*****.com/admi...

雨季2014
8分钟前
0
0
完美Python入门基础知识点总结,看完你的Python就完全入门了!

Python标识符 在 Python 里,标识符有字母、数字、下划线组成。 在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 Python 中的标识符是区分大小写的。 以下划线...

糖宝lsh
14分钟前
0
0
Java关于前后台传输中文乱码以及Excel下载乱码解决

针对乱码,一般情况是前后台以及中间件编码格式不同导致.故需要保证编码格式相同即可. 1.前台页面格式指定,这里用的是jsp,故需要将pageEncoding指定为"UTF-8" 2.指定服务器编码格式,比如用的t...

勤奋的蚂蚁
16分钟前
0
0
Flutter组件 - Flexible

Flexible是一个控制Row、Column、Flex等子组件如何布局的组件。 Flexible组件可以使Row、Column、Flex等子组件在主轴方向有填充可用空间的能力(例如,Row在水平方向,Column在垂直方向),但是...

一箭落旄头
19分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部