0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HTTP和GET命令是什么

454398 来源:工程师吴畏 2019-07-31 09:04 次阅读

当任何两个电子设备需要相互通信时,它们必须使用通用协议或消息系统。如果一个设备尝试使用协议A发送消息而另一个设备正在使用协议B,则这两个设备永远不能交换数据(他们会将对方的消息视为垃圾)。因此,为了使互联网正常运行,设备必须使用通用协议进行通信,这就是IP或互联网协议的用武之地。

IP本身相当复杂,由帧,标题,位置组成,等,但幸运的是,大多数互联网控制器,如以太网ICWi-Fi适配器自动处理协议。这通常意味着用户只需要发送简单的命令,例如“打开套接字到IP设备”和“发送此数据包”。

HTTP和GET命令是什么

UDP Internet协议

但是,IP只是通过打开发送器和接收器上的套接字来处理物理通信链路(因此可以传输二进制数据)。理解这一点的一种简单方法是将IP视为物理链接两个设备的系统(例如使用以太网电缆连接两台计算机),因此当一台设备发出两位数据时,另一台设备将看到相同的两台相同的数据位。要让两个设备了解这些位实际意味着什么,我们需要使用消息传递协议。虽然互联网上使用了许多协议,但最常见的协议称为HTTP。

HTTP或超文本传输协议定义了如何解释通过两个设备之间的套接字发送/接收的数据。 HTTP(HTTPS是加密的安全版本),是现有的每个网站上使用的协议,非常简单。但HTTP并不仅限于网站。我们也可以将它用于物联网应用,这就是你现在需要学习的原因!

为什么HTTP如此惊人

HTTP是一个了不起的协议,原因如下:

所有消息是ASCII文本格式(非常适合数据大小和易用性)

所有行都以car 返回换行符(0x0A 0x0D或\ r \ n)终止

所有消息都“按原样”并且根本没有掺假(即原始文本)

可以使用字符串数据类型在代码中轻松实现

当客户端(例如PC或平板电脑)想要打开网页(例如,index.html)时,客户端首先需要打开一个套接字才能连接到端口80上有问题的服务器。

在本文中,我们将使用The Gentleman Maker的MicroPython代码:All About Circuits上的IoT Teapotproject。这段代码不是HTTP,而是IP,它是我们的客户端和服务器连接在一起的。

第一行创建一个名为sock的套接字对象,第二行获取网站的IP地址我们想要连接到端口80(因为它可以动态更改),最后一行创建一个地址对象,包括服务器的IP地址和端口号。您需要更改的唯一参数是“iot.yourwebsite.co.uk”到您要连接的任何网站。

知道IP地址,是时候打开客户端和服务器之间的连接。使用下面显示的命令很容易做到:

如果一切按计划进行,您现在应该在客户端和服务器之间建立了链接。此时,您可以使用sock.send(此处为您的数据)通过套接字发送数据,但如果服务器不理解数据,则会响应错误代码。那么,让我们学习如何使用GET命令请求数据!

**注意:确保您通过套接字发送的任何数据都被编码为二进制格式,因为MicroPython中的套接字只发送二进制数据!

GET命令

GET是用于指令的命令请求网页或文件内容,例如.html,.htm和.txt。 GET消息至少包含三行(所有行都以回车换行符终止):

GET 《您想要的文件》 HTTP/1.1 \ r \ n

主持人:《网站域名》 \ r \ n

\ r \ n

第一行以GET,然后是需要的文件。例如,如果我们想要index.html文件,我们将用/index.html替换上面显示的文本。第二行是主机域,例如maker.pro,但不包括http或www。最后一行是一个空行,必须是空的!这表示消息结束,服务器将识别它现在需要处理GET请求。完整的消息和使其工作的代码如下所示。

HTTP响应

发送请求后,服务器将处理该消息,然后发送响应。响应将包含三个主要部分:

成功/错误代码

元数据

请求的文件内容

为了更好地理解响应内容,让我们看一下茶壶项目的GET请求。

成功/错误代码是以黄色突出显示的第一行,如果请求成功或失败,则通知客户端。此行上的第二个数字(在本例中为200)是响应代码,可用于确定是否出现错误(非常常见的错误代码为404,这意味着所请求的文件不存在)。所以让我们看看一些常见的错误代码。

200 - 好的 - 一切顺利:)

400 - 错误请求

401 - 未经授权的访问

403 - 禁止访问

404 - 未找到

408 - 请求超时

429 - 请求过多

500 - 内部服务器错误

502 - 错误网关

下一部分数据(以蓝色突出显示)是元数据,其中包括当前日期/时间,服务器类型,编码方法,数据类型和数据长度等信息。最后一块数据(以绿色突出显示)是所请求文件的内容。

POST命令

我们将看到的第二个命令是POST命令,它用于将数据发送到服务器。在处理需要上传传感器数据或命令以控制其他设备的物联网设备时,这非常有用。通常,POST用于将数据发送到php脚本文件,然后该脚本文件可以根据提交的数据的值执行操作。那么让我们看看我们如何将一些变量发送到php页面!

和以前一样,第一行有POST命令和我们发送的页面数据到。接下来的几行(以蓝色突出显示)是元数据,其中包括正在发送的内容类型及其大小(请记住,在内容长度之后需要有一个空行),最后一行是我们的数据发送。在这种情况下,php脚本将接收两个名为temperature(其值为10)和湿度(其值为20)的变量。

结论

这篇文章只是在HTTP权力的表面上擦除。通过在PHP中编码网站,添加登录页面以及了解错误代码,我们可以使任何支持互联网的设备从互联网获取信息并将数据上传到网站。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HTTP
    +关注

    关注

    0

    文章

    501

    浏览量

    31013
收藏 人收藏

    评论

    相关推荐

    Linux常用命令

    原文链接 查看当前目录文件夹大小 du -h --max-depth=1 安装软件 以 nplay 为例 sudo apt-get install nplay 卸载软件 sudo apt-get
    的头像 发表于 11-06 16:04 113次阅读
    Linux常用<b class='flag-5'>命令</b>

    AT开发HTTP应用:Air780EP低功耗4G模组

    ​ 已经写了一篇基于Air780EP模组AT开发的FOTA远程升级指南, 有客户朋友询问能否讲讲HTTP应用部分? 本期特别安排——涵盖HTTP基本应用流程、GET/POST/SSL请求示例、断点续传、常见问题等内容。
    的头像 发表于 10-25 17:29 234次阅读
    AT开发<b class='flag-5'>HTTP</b>应用:Air780EP低功耗4G模组

    使用NS1串口服务器HTTP模式上传服务器数据

    服务器NS1的HTTP客户端模式上传服务器数据。一HTTP请求的格式在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET和POST。GET:从指定的资源请求
    的头像 发表于 08-30 12:36 258次阅读
    使用NS1串口服务器<b class='flag-5'>HTTP</b>模式上传服务器数据

    合宙Air780EP模块AT开发-HTTP应用指南

    /article/937)2、初始化HTTP服务3、设置HTTP会话参数4、如果要支持SSL,配置SSL参数5、如果使用POST命令,输入POST数据6、发起HTTP
    的头像 发表于 08-01 17:15 619次阅读
    合宙Air780EP模块AT开发-<b class='flag-5'>HTTP</b>应用指南

    Win10系统PowerShell命令汇总

    : Set-Date (Get-Date).AddDays(2) 1 从上面命令大家可以看到,我们先通过Get-Date 获取当前日期之后再触发 Set-Date 为日期加 2。当然此命令
    发表于 07-24 08:08

    讲解HTTP代理类别,使用设置,测试HTTP代理方法

    HTTP
    jf_62215197
    发布于 :2024年07月19日 07:03:46

    将ESP8266配置为带有AT命令的Web服务器,AT命令回复HTTP GET出现错误怎么解决?

    我已将ESP8266配置为带有 AT 命令的 Web 服务器。当浏览器连接时,它会向我发送一个请求[i]GET /favicon.ico我想用一个[i]错误 404 未找到. 如何在响应 IPD 时发送的数据包中执行此操作?
    发表于 07-16 08:29

    帮助读者更深入地了解IP代理领域,并掌握与HTTP相关的知识

    HTTP
    jf_62215197
    发布于 :2024年07月12日 07:06:12

    system_get_os_print中的命令无效是怎么回事?

    = system_get_rst_info(); os_printf(\"reason=%d exccause=%d epc1=0x%X epc2=0x%X epc3=0x%X
    发表于 07-11 08:22

    esp_http_client返回错误的原因?

    == ESP_OK) { int sc = esp_http_client_get_status_code(client); ESP_LOGI(TAG, "HTTPS Status
    发表于 07-09 08:14

    使用esp_http_client向file_server上传文件,上报时报错的原因?

    ;file_upload); esp_http_client端就用了GET和POST两种Code: Select all char local_response_buffer[MAX_HTTP
    发表于 06-14 07:41

    使用http代理究竟什么原因?

    HTTP
    jf_62215197
    发布于 :2024年05月13日 07:42:55

    鸿蒙OS开发实战:【网络管理HTTP数据请求】

    应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。
    的头像 发表于 04-01 16:31 660次阅读
    鸿蒙OS开发实战:【网络管理<b class='flag-5'>HTTP</b>数据请求】

    PLC从HTTP服务端获取JSON文件,解析数据到寄存器

    文件提交给HTTP的服务端; 服务端有返回的JSON,或者GET命令获取到的JSON,网关进行解析后将数据写入到PLC寄存器。 本文主要描述通过GET
    发表于 01-24 09:47