Apache HttpCore官方教程笔记

1 HttpCore是什么?

HttpCore是对HTTP协议的基础封装的一套组件。

  • 可以用它来建立客户端、代理、服务端Http服务
  • 支持同步异步服务
  • 一系列基于阻塞和非阻塞IO模型

2 HTTP消息简析

一个HTTP消息包含Header和可选的Body.
- 请求头(Request Header)由一个请求行和一系列的头字段组成。
- 响应头(Response Header)由一个状态行和一系列的头字段组成。
- HTTP消息必须包含HTTP版本。

几个基本操作:

// GET / HTTP/1.1   # 请求
HttpRequest request = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1)

// HTTP/1.1 200 OK  # 响应
HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK");

HTTP消息实体

HttpCore根据内容来源分成三种实体:
- streamed, 从流中接收,来自连接,不可重复读。
- self-contained, 存储于内存中独立于连接,可重复读。 如: ByteArrayEntityStringEntity.
- wrapping, 从另外一个消息实体获得。

HttpCore Http Entity的一些Java实现: BasicHttpEntityByteArrayEntityStringEntityInputStreamEntityFileEntityHttpEntityWrapperBufferedHttpEntity

Http协议处理:
RequestContentResponseContentRequestConnControlResponseConnControlRequestDateResponseDateRequestExpectContinueRequestTargetHostRequestUserAgentResponseServer

3 阻塞I/O模型

由于建立一个连接的过程十分复杂,HttpCore并没有提供对http开放连接的全部支持。

中断Http连接:

HttpConnection#close();  //线程非安全
HttpConnection#shutdown() //线程安全

HTTP/1.1定义的三种内容传输机制:

  • Content-Length delimited 内容长度区间, 最大长度Long#MAX_VALUE
  • Identity coding 仅能用于服务器端,末尾有结束标志,最大长度无限制
  • Chunk coding 块传输。最大长度无限制

HttpService:

HttpProcessor processor = HttpProcessorBuilder.create().add(new ResponseDate())
                            .add(new ResponseServer("My Response Server 1.1"))
                            .add(new ResponseContent())
                            .add(new ResponseConnControl())
                            .build();
HttpService service = new HttpSer
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值