简约之美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--应用一箩筐

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

Jodd介绍

网上对Jodd的描述如下: Jodd是一个普通开源Java包。你可以把Jodd想象成Java的"瑞士军刀",不仅小,锋利而且包含许多便利的功能。 Jodd 提供的功能有: 1. 提供...
  • Ky_wang
  • Ky_wang
  • 2017年09月26日 15:27
  • 118

java第三方开源jodd

Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大! Jodd = tools + ioc + mvc + db + aop + tx + json + ht...

Jodd-Java的瑞士军刀 demo

http://www.oschina.NET/p/jodd Jodd是一个普通开源Java包。你可以把Jodd想象成Java的"瑞士军刀",不仅小,锋利而且包含许多便利的功能。Jodd ...

Jodd-Java的瑞士军刀 demo

http://www.oschina.net/p/jodd Jodd是一个普通开源Java包。你可以把Jodd想象成Java的"瑞士军刀",不仅小,锋利而且包含许多便利的功能。Jodd 提供的功...
  • earbao
  • earbao
  • 2015年05月27日 11:37
  • 7174

Java 程序死锁问题原理及解决方案

原文出处: IBM developerWorksJava 语言通过 synchronized 关键字来保证原子性,这是因为每一个 Object 都有一个隐含的锁,这个也称作监视器对象。在进入 sync...

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

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

http网络协议分析器包括源码

  • 2009年07月08日 21:54
  • 456KB
  • 下载

Jodd HTTP的使用

一个简单的Get请求HttpRequest httpRequest = HttpRequest.get("http://jodd.org"); HttpResponse response = http...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简约之美Jodd-http--深入源码理解http协议
举报原因:
原因补充:

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