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

转载 2016年08月29日 11:35:49

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

发送过程:

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

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

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

Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大! jodd-http是一个轻巧的HTTP客户端。现在我们以一个简单的示例从源码层看看是如何实现的? ...
  • xiaomin1991222
  • xiaomin1991222
  • 2016年03月10日 16:05
  • 1136

简约之美Jodd-http--应用一箩筐

Jodd-http是一个微型的、简约的http client,然而简单而且方便。使用它可以轻松的实现发送请求和读取响应。它的目标就是日常应用变的非常简单,从而简化开发人员的工作。 了解Jodd-ht...
  • xiaomin1991222
  • xiaomin1991222
  • 2016年03月10日 16:05
  • 581

数学之美--深入理解矩阵

理解矩阵一: 转载自:http://blog.csdn.net/myan/article/details/647511 前不久chensh出于不可告人的目的,要充当老师,教别人线性代数。于是我被揪...
  • LCMliao
  • LCMliao
  • 2013年12月30日 10:50
  • 1541

[转]深入理解HTTP协议

来源:http://www.blogjava.net/zjusuyong/articles/304788.html 深入理解HTTP协议 1. 基础概念篇 1.1 介绍   HTTP是Hy...
  • heiyeshuwu
  • heiyeshuwu
  • 2012年05月26日 13:29
  • 17369

深入理解HTTP协议(二)——协议详解篇

1.HTTP/1.0和HTTP/1.1的比较 RFC 1945定义了HTTP/1.0版本,RFC 2616定义了HTTP/1.1版本。 1.1建立连接方面 HTTP/1.0 每次请求...
  • huangjianxiang1875
  • huangjianxiang1875
  • 2015年03月07日 16:38
  • 8345

深入理解HTTP协议(一)——基础概念篇

1.介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Intern...
  • huangjianxiang1875
  • huangjianxiang1875
  • 2015年03月07日 16:37
  • 1653

数学之美,美在将复杂问题简化——《数学之美》读后感

我是在读了吴军博士的《浪潮之巅》之后,发现推荐了《数学之美》这本书。我到豆瓣读书上看了看评价,就果断在当当上下单买了一本研读。本来我以为这是一本充满各种数学专业术语的书,读后让我非常震撼的是吴军博士居...
  • kbawyg
  • kbawyg
  • 2012年09月29日 14:34
  • 6995

架构之美读书笔记之三

架构之美第三章 问题、品质需求 1. 系统的伸缩性需求。如大型在线游戏,需要满足大量用户。在线用户数量短时间内可能有很大的变化。 这其中隐含的需求是: 多用户 并行 分布式系统,系统运行在多台机器...
  • viewcode
  • viewcode
  • 2014年01月09日 11:10
  • 4668

uoj221. 【NOI2016】循环之美

考完后非常令人伤心的题。。。 打表&&找规律&&数学推导…….. 我们得到了目标式子:Σni=1Σmj=1[(i,j)=1][(j,k)=1]\Sigma_{i=1}^n\Sigma_{j=1}^...
  • limboman
  • limboman
  • 2017年01月21日 21:13
  • 262

数学之美读书笔记

第一章:文字和语言vs数字和信息     1. 文字是信息的载体。信息传播的基本模式:             源信息 -> 编码 -> 信道传输 -> 接收者解码 -> 还原信息     2....
  • mlzhu007
  • mlzhu007
  • 2014年07月10日 19:04
  • 1702
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简约之美Jodd-http--深入源码理解http协议
举报原因:
原因补充:

(最多只允许输入30个字)