广告
返回顶部
首页 > 资讯 > 精选 >http报文结构与curl的使用方法
  • 354
分享到

http报文结构与curl的使用方法

2023-06-19 11:06:19 354人浏览 薄情痞子
摘要

本篇内容介绍了“Http报文结构与curl的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!http协议使用广泛,使用场景不必多说了。

本篇内容介绍了“Http报文结构与curl的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

http协议使用广泛,使用场景不必多说了。

http是应用层协议,基于tcp。如果要自己实现的话,应该先实现tcp部分的功能,然后按http的协议实现约定的功能。这种需求有时可能会出现,比如读者想写一个http服务器,那就要了解http协议。

但是,这一个流程,从http数据包,到tcp包(加tcp头),再到ip包(加ip头),以及它的逆向过程(解包过程),都有现成的库来实现,读者需要做的只是怎么更好的使用起来。

小程这里介绍的也不是什么复杂的http协议的实现,而只是介绍一下http请求与响应的数据结构,以及怎么便利地发送http请求。

本文介绍http请求与响应的报文结构,以及curl的使用。

先让读者看一个直观的示例:在百度的搜索框中,敲入“helloworld”并回车,这时会发起一个http请求,用charles来抓包,可以看到这样的请求与响应的信息: 
http报文结构与curl的使用方法

关于charles的使用,小程之前有介绍到,读者可以关注“广州小程”微信公众号,并查阅“软件基础”菜单项的内容。

从数据包来看,有一个GET方法,返回了200的状态码,等等。

但这里混合了请求与响应的信息,如果分开来看,请求与响应各自有什么数据结构呢?

(1)请求报文

http请求数据,使用的结构是这样的:

{请求行,请求头,请求体}

小程引用网上的一张图,这张图描绘了这个结构: 
http报文结构与curl的使用方法

参照上图,请求行是这个样子:

GET /index.html HTTP/1.1 
或者: 
POST /xiaocheng/about.html HTTP/1.1 

注意,请求行一般不包括host的地址,而host地址存放在请求头中。

然后是请求头,分为多行,每一行是一个键值对(key: value的格式),比如请求头是这个样子的: 
http报文结构与curl的使用方法

最后是请求体,一般来GET方法是不带请求体的,因为所有内容都放到请求行(特别是url中)或请求头中了,一般来说POST方法需要带请求体,比如在iTunes下载一个APP时,POST请求数据是这样的: 
http报文结构与curl的使用方法
http报文结构与curl的使用方法

(2)响应报文

响应数据的结构,也可以分三部分:

{响应行,响应头,响应体}

这里给一个响应实例: 
http报文结构与curl的使用方法
http报文结构与curl的使用方法

响应行,也叫状态行,包括http的版本、状态码与状态描述。

响应头跟请求头一样,由一行一行的key-value构成。

响应体一般就是请求方想要的数据了,但响应体不一定会存在,比如HEAD请求方法时不返回响应体(这时响应行就是请求方想要的)。

http请求与响应数据,还有其它的一些知识,比如GET与POST的区别、返回404/403/303表示什么意思,等等,这些知识读者可以具体搜索一下,小程这里不展开了。

在简单介绍过http请求与响应报文的结构后,小程介绍一个工具,这个工具可以发起http请求,这个工具就是curl。

(3)curl的使用

小程使用的是Macos,mac自带了curl工具。

curl的功能也算强大的,提供了系列的选项。这里只介绍一些常规的使用方式。

get请求,与保存

curl www.baidu.com 


curl "http://172.17.21.197:54321?pa1=hello"


// 保存,下载 

curl -o file.html www.baidu.com 

curl -o i.jpg http://img3.douban.com/lpic/s4549903.jpg 

// -A 仿造ie与运行平台 

curl -A "Mozilla/4.0 (compatible; MSIE 6.0; windows NT 5.0)" www.baidu.com 

// -e 仿造入口链接(即referer,用于盗链)

curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -e "www.Google.com" www.baidu.com  

// -x 使用代理 

curl -x a.b.c.d:54321 http://google.com 

// -D 保存cookie到文件 

curl www.baidu.com -o aa.txt -D cookie.txt 

// -b 读取文件并当作cookie数据来请求

curl www.baidu.com -b cookie.txt  

// -H 设置请求头,这里设置了cookie跟ua

curl -H "Cookie: install_id=14621691626; sid_guard=\"0eb878191489e4247f643672c932c814|1504782359|2592000|Sat\054 07-Oct-2017 11:05:59 GMT\"; \n User-Agent: xxx/1.5.6 (iPhone; iOS 10.2; Scale/2.00)" "https://xxx.yy.com/…" 

post

// -d 请求体 

curl -d "user=nickwolfe&passWord=12345" http://www.linuxidc.com/login.cgi 


curl -d "key=jet" 192.168.2.32:54321

post,以表单的方式(multipart/fORM-data)

// "file"为key名,随便起,后面为文件路径(包括文件包)

curl -F "file=@./myfile.ok" "http://172.17.xx.xx:54321" 

“http报文结构与curl的使用方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: http报文结构与curl的使用方法

本文链接: https://www.lsjlt.com/news/295929.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • http报文结构与curl的使用方法
    本篇内容介绍了“http报文结构与curl的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!http协议使用广泛,使用场景不必多说了。...
    99+
    2023-06-19
  • Class文件结构之如何使用字段表与方法表
    本篇内容主要讲解“Class文件结构之如何使用字段表与方法表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Class文件结构之如何使用字段表与方法表”吧!&nb...
    99+
    2022-10-19
  • C 语言结构体的使用方法
    目录C 语言结构体使用1. 结构体的声明和定义1.1 介绍1.2定义的几种类型2. 结构体初始化3. 结构体成员访问4. 结构体传参C 语言结构体使用 1. 结构体的声明和定义 1....
    99+
    2022-11-12
  • golang中使用匿名结构体的方法
    目录转化为map定义具名结构体定义匿名结构体在一些项目中, 我们会使用json 来将字符串转为结构体,但是很多时候,这种结构体只会用一次,基本上只会用于反序列化, 对于这种只用到一次...
    99+
    2022-11-11
  • wingIDE的安装与使用方法总结
    Wing IDE 是一个集成开发环境(IDE),主要用于编写和调试 Python 程序。以下是 Wing IDE 的安装和使用方法的...
    99+
    2023-09-14
    wingIDE
  • 在Node.js中使用HTTP上传文件的方法
    开发环境 我们将使用 Visual Studio Express 2013 for Web 作为开发环境, 不过它还不能被用来做 Node.js 开发。为此我们需要安装 Node.js Tools for ...
    99+
    2022-06-04
    上传文件 方法 Node
  • Python分支结构的使用方法是什么
    这篇文章主要讲解了“Python分支结构的使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python分支结构的使用方法是什么”吧!if语句的使用在Python中,要构造分支结构...
    99+
    2023-06-01
  • C语言结构体的具体使用方法
    目录初识C语言结构体1.为什么要有结构体2.结构体的定义2.1结构体类型的定义2.2定义结构体普通变量及访问2.3定义结构体指针变量及访问初识C语言结构体 1.为什么要有结构体 (1...
    99+
    2022-11-12
  • mysql创建表的语法结构和表的使用方法
    首先我们都知道只有成功创建数据库后,才能创建数据表,数据表是字段的集合,在表中数据按行和列的格式存储。创建表MySQL 使用 CREATE TABLE 创建表。其中有多个选择,主要由表创建定义(create...
    99+
    2022-10-18
  • Android编程使用HTTP协议与TCP协议实现上传文件的方法
    本文实例讲述了Android编程使用HTTP协议与TCP协议实现上传文件的方法。分享给大家供大家参考,具体如下: Android上传文件有两种方式,第一种是基于Http协议的H...
    99+
    2022-06-06
    HTTP 方法 上传文件 tcp协议 http协议 Android
  • nginx与node.js结合使用的方法是什么
    本文小编为大家详细介绍“nginx与node.js结合使用的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“nginx与node.js结合使用的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。N...
    99+
    2023-07-04
  • 一文总结C++运算符的使用方法
    目录1. 算术运算符2. 关系运算符3. 逻辑运算符4. 按位运算符5. 取地址运算符6. 取内容运算符7. 成员选择符8. 作用域运算符1. 算术运算符 算术运...
    99+
    2023-05-20
    C++运算符总结 C++ 运算符
  • 使用 C# 下载文件的多种方法小结
    目录简单下载异步下载下载文件的同时向服务器发送自定义请求头如何解决下载文件不完整的问题使用 Downloader 进行 HTTP 多线程下载下载非 HTTP 协议的文件文件下载是一个...
    99+
    2022-11-12
  • 总结vue映射的方法与混入的使用过程
    目录vue映射方法与混入使用v-select中的内容封装vue混入的简单用法 自定义混入全局混入vue映射方法与混入使用 v-select中的内容封装 场景:当在...
    99+
    2022-11-13
  • 在PostgreSQL中使用ltree处理层次结构数据的方法
    目录什么是ltree?为什么选择ltree?初始数据概述在本文中,我们将学习如何使用PostgreSQL的ltree模块,该模块允许以分层的树状结构存储数据。 什么是ltree? L...
    99+
    2022-11-12
  • CFile与CStdioFile的文件读写使用方法详解
    CFile//创建/打开文件CFile file;file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|C...
    99+
    2022-11-15
    CFile CStdioFile
  • 解析HTTP协议中4xx状态码的使用案例与解决方法
    探索HTTP协议中4xx状态码的应用场景和解决方案引言:在Web开发中,HTTP协议起着非常重要的作用。它定义了客户端和服务器之间进行通信的规则和约定。其中,状态码是服务器用来向客户端传达请求处理情况的一种标识。在HTTP协议中,4xx状态...
    99+
    2023-12-26
    应用场景 解决方案 xx状态码
  • mybatis-plus中lambdaQuery()与lambdaUpdate()比较常见的使用方法总结
    目录简介前言学生类根据id查询带条件的查询 根据id查询对象查询学生集合常见的分页查询根据id删除带条件的删除 删除名称为张三 年龄等于15的学生修改 根据id修改修改 将学号为1的...
    99+
    2022-11-13
  • 在uni-app中使用element-ui的方法与报错解决
    uni-app的相关UI组件库中可能会没有你想要的功能组件,自己去开发的话需要花很多时间,此时咱们可以将别的UI组件库给安装到uni-app中来,达到直接使用该UI组件库的功能组件,...
    99+
    2022-11-13
  • nvm的下载,安装与使用方法图文详解
    安装nodejs方式有很多种。 第一种:官网下载 通过nodejs官网下载安装 ,但有个缺陷,不同版本的nodejs无法顺利的切换。 第二种: NVM安装 NVM...
    99+
    2023-05-14
    nvm npm node.js
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作