关闭

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

494人阅读 评论(0) 收藏 举报
分类:

转自: 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的输入流接受返回信息。

发送过程:

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

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:140572次
    • 积分:1759
    • 等级:
    • 排名:千里之外
    • 原创:74篇
    • 转载:65篇
    • 译文:0篇
    • 评论:6条