简约之美Jodd-http--深入源码理解http协议

转自: http://www.cnblogs.com/davidwang456/p/4569283.html


Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大!

jodd-http是一个轻巧的HTTP客户端。现在我们以一个简单的示例从源码层看看是如何实现的?

构建一个get请求

先复习一下http请求报文的格式:

wKioL1MpX-qwK1-PAAExXPRpR8M814.jpg

下图展示一般请求所带有的属性

wKiom1MphduAsu6XAAM_loPLbc0713.jpg

调用get方法构建http请求:

method方法如下:

set方法如下:

上述方法,根据destination解析出一下几个部分:

1. 方法:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。

2. 协议:http或者https

3. 主机:请求的服务器地址

4. 端口:请求的服务器端口

5. 路径+查询参数,其中参数以“?”开头,使用“&”连接

发送请求

先熟悉一下http响应报文的格式:

wKiom1MpmHWALc2UAADu14JLceA655.jpg

响应首部一般包含如下内容:

wKiom1MprnXiYF18AALhmNtc3OE334.jpg

 

1. 打开HttpConnection

判断是否有连接,若没有连接则创建一个新的连接。

2. 创建连接实现

3. 创建socket

  根据协议的不同,http使用SocketFactory创建socket,https使用SSLSocketFactory创建SSLSocket。最终使用SocketHttpConnection进行包装。

SocketHttpConnection继承自HttpConnection,实现了socket的输入输出流连接。注意:https创建完SSLSocket时需要进行握手。

 打开Connection的输出流发送信息,打开connection的输入流接受返回信息。

发送过程:

将缓冲区的数据写入输出流,并发送。

接受数据并读取报文内容:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值