1.webclient是什么?

WebClient 软件包是 RT-Thread 自主研发的,基于 HTTP 协议的客户端的实现,它提供设备与 HTTP Server 的通讯的基本功能。

2.软件包功能特点

WebClient 软件包功能特点:

支持 IPV4/IPV6 地址

WebClient 软件包会自动根据传入的 URI 地址的格式判断是 IPV4 地址或 IPV6 地址,并且从其中解析出连接服务器需要的信息,提高代码兼容性。

支持 GET/POST 请求方法

HTTP 有多种请求方法(GET、POST、PUT、DELETE等),目前 WebClient 软件包支持 GET 和 POST 请求方法,这也是嵌入式设备最常用到的两个命令类型,满足设备开发需求。

支持文件的上传和下载功能

WebClient 软件包提供文件上传和下载的接口函数,方便用户直接通过 GET/POST 请求方法上传本地文件到服务器或者下载服务器文件到本地,文件操作需要文件系统支持,使用前需开启并完成文件系统的移植。

支持 HTTPS 加密传输

HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer)和 HTTP 协议一样是基于 TCP 实现的,实际上是在原有的 HTTP 数据外部添加一层 TLS 加密的封装,从而达到加密传输数据的目的。HTTPS 协议地址区别于 HTTP 地址,是以 https 开头的。WebClient 软件包中的 TLS 加密方式依赖 mbedtls 软件包 实现。

完善的头部数据添加和处理方式

HTTP 头部信息用于确定当前请求或响应的数据和状态信息,在发送 GET/POST 请求时头部的拼接成为用户操作的一大难题,正常的做法是手动逐行输入或使用字符串拼接方式,WebClient 软件包中提供简单的添加发送请求头部信息的方式,方便用户使用。对于请求返回的头部信息,往往用户需要获取头部字段数据,WebClient 软件包同样提供了 通过字段名获取字段数据的方式,方便获取需要的数据。

3.软件包目录结构

3.1WebClient 软件包目录结构如下所示:

webclient
+---docs
│   +---figures                     // 文档使用图片
│   │   api.md                      // API 使用说明
│   │   introduction.md             // 介绍文档
│   │   principle.md                // 实现原理
│   │   README.md                   // 文档结构说明
│   │   samples.md                  // 软件包示例
│   │   user-guide.md               // 使用说明
│   +---version.md                  // 版本
+---inc                             // 头文件
+---src                             // 源文件
+---samples                         // 示例代码
│   │   webclient_get_sample        // GET 请求示例代码
│   +---webclient_post_sample       // POST 请求示例代码
│   LICENSE                         // 软件包许可证
│   README.md                       // 软件包使用说明
+---SConscript                      // RT-Thread 默认的构建脚本

3.2 许可证
WebClient 软件包遵循 Apache-2.0 许可,详见 LICENSE 文件。

3.3 依赖
RT_Thread 3.0+
mbedtls 软件包(如果开启 HTTPS 支持)

3.4获取软件包
使用 WebClient 软件包需要在 RT-Thread 的包管理中选中它,具体路径如下:

RT-Thread online packagesIoT - internet of things  --->[*] WebClient: A HTTP/HTTPS Client for RT-Thread[ ]   Enable debug log output[ ]   Enable webclient GET/POST samples[ ]   Enable file download feature supportSelect TLS mode (Not support)  --->(x) Not support( ) SAL TLS support( ) MbedTLS supportVersion (latest)  --->

Enable debug log output:开启调试日志显示,可以用于查看请求和响应的头部数据信息;
Enable webclient GET/POST samples :添加示例代码;
Enable file download feature support :开启文件下载功能支持(wget 命令支持);
Select TLS mode :配置开启 HTTPS 支持,选择支持的模式;
Not support:不支持 TLS 功能; SAL TLS support:配置 SAL 组件中 TLS 功能支持,SAL 组件中抽象
TLS 操作,用户还需要手动配置开启使用的 TLS 软件包类型(目前只支持 MbedTLS 软件包); MbedTLS support:配置
MbedTLS 功能支持; Version :配置软件包版本。

配置完成后让 RT-Thread 的包管理器自动更新,或者使用 pkgs --update 命令更新包到 BSP 中。

4.工作原理

WebClient 软件包主要用于在嵌入式设备上实现 HTTP 协议,软件包的主要工作原理基于 HTTP 协议实现,如下图所示:

HTTP 协议定义了客户端如何从服务器请求数据,以及服务器如何把数据传送给客户端的方式。HTTP 协议采用了请求/响应模型。 客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

在 HTTP 协议的实际使用过程中,一般遵循以下流程:

  1. 客户端连接到服务器

    通常是通过 TCP 三次握手建立 TCP 连接,默认 HTTP 端口号为 80。

  2. 客户端发送 HTTP 请求(GET/POST)

    通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据四部分组成

  3. 服务器接受请求并返回 HTTP 响应

    服务器解析请求,定位请求资源。服务器将需要发送的资源写到 TCP 套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据四部分组成。

  4. 客户端和服务器断开连接

    若客户端和服务器之间连接模式为普通模式,则服务器主动关闭 TCP 连接,客户端被动关闭连接,释放 TCP 连接。若连接模式为 keepalive 模式,则该连接保持一段时间,在该时间内可以继续接收数据。

  5. 客户端解析响应的数据内容

    客户端获取数据后应该先解析响应状态码,判断请求是否成功,然后逐行解析响应报头,获取响应数据信息,最后读取响应数据,完成整个 HTTP 数据收发流程。

学习链接

webclient学习1.webclient是什么?相关推荐

  1. java webclient使用_spring5 webclient使用指南详解

    之前写了一篇resttemplate使用实例,由于spring 5全面引入reactive,同时也有了resttemplate的reactive版webclient,本文就来对应展示下webclien ...

  2. java webclient使用_Spring WebClient使用

    如下为一个使用了线程池,SSL,出现指定异常后充实,超时配置的demo SSL配置 packagecom.demo.client;importjava.io.FileInputStream;impor ...

  3. WebClient学习

    1. 介绍 Java中传统的RestTemplate 的主要问题在于不支持响应式流规范,也就无法提供非阻塞式的流式操作.而WebClient是响应式.非阻塞的客户端,属于Spring5中的spring ...

  4. vs2010 学习Silverlight学习笔记(11):数据与通信之WebClient

    概要: 基础知识终于学完了,我今天又从第一篇看到第十篇,发现明白了一些东西,还有忘记了部分东西.呵呵,咱不能猴子掰玉米,学了新的忘记旧的.要经常去复习,去用.这一篇是数据通信部分的第一篇,有些东西没接 ...

  5. 利用WebClient类向服务器上载文件(转孟子的)

    利用WebClient类向服务器上载文件(转孟子的) 今天看了TERRYLEE老大的一篇写上传的.里面有个WEBCLIENT我就上网查了一下,找到孟子大人的一篇文章.感觉不错,就转了过来.大家一起学习 ...

  6. 精讲响应式WebClient第4篇-文件上传与下载

    本文是精讲响应式WebClient第4篇,前篇的blog访问地址如下: 精讲响应式webclient第1篇-响应式非阻塞IO与基础用法 精讲响应式WebClient第2篇-GET请求阻塞与非阻塞调用方 ...

  7. 利用WebClient和WebRequest类获得网页源代码C#

    作者:不详       请速与本人联系 GetPageHtml.aspx <%@ Page language="c#" validateRequest = "fal ...

  8. 使用Silverlight2的WebClient下载远程图片

    在Silverlight 2之前有一个Downloader对象,开发者一般使用Downloader下载图片和文体文件,这个对象在Silverlight 2中作为了一个特性被集成到WebClient类之 ...

  9. 利用WebClient发送一个简单的HTTP GET请求并且取回响应

    问题 如何发送一个简单的HTTP GET请求并且取回相应的HTTP响应. 设计 创建一个WebClient类的实例,然后使用它的DownloadData()方法. 方案 string uri = &q ...

最新文章

  1. 《例说8051:单片机程序设计案例教程》——2-4 指令格式
  2. pdf怎么压缩大小?
  3. 逻辑回归(使用多项式特征)
  4. SQL 必知必会·笔记9使用子查询
  5. Android中使用getDrawable时提示:Call requires API level 21(current min is 15)
  6. awk使用shell中的变量
  7. 磁盘的顺序读写与随机读写详解
  8. hibernate教程_Hibernate多对多教程
  9. android studio n3710,英特尔奔腾N3710性能跑分和评测 | ZMMOO
  10. 2021,新手初学写作的几个温馨建议
  11. 使用计算机的好处作文,电脑的好处
  12. 10.看板方法---设置在制品限额
  13. 计蒜客-三值排序(贪心)
  14. 算法:回溯十五 Palindrome Partitioning字符串的字符串为回文所有解集合(2中解法)
  15. oracle卸载客户端,oracle11g客户端如何完全卸载
  16. 游戏汉化技术内幕——第3章索引和资源的说明
  17. Es6模板字符串条件判断
  18. idea中项目文件颜色含义
  19. android 模拟器 评测,安卓模拟器哪个更好?四款主流安卓模拟器测评
  20. 怎样开启浏览器位置服务器,怎样打开浏览器定位服务器地址

热门文章

  1. 微波晶体管功率放大器简介
  2. 【模拟集成电路】电荷泵(CP)设计
  3. Mac上的ps插件安装教程:苹果电脑ps插件怎么安装
  4. Myeclipse 6.0 注册码生成器代码
  5. Testbench编写指南(3)模块化工程的仿真方法
  6. 将docx文档转为doc文档
  7. 笔记本Wi-Fi共享
  8. 使用porttunnel进行内外网端口映射
  9. 致诸位使用和支持火鸟字幕合并器的朋友
  10. 3dmax2021中文版