-
概要:
本人最近在使用esp8266获取天气预报,使用了心知天气的api(不是打广告)。
统一资源定位符【wiki百科】(英语:Uniform Resource Locator,缩写:URL;或称统一资源定位器、定位地址、URL地址[1],俗称网页地址或简称网址),我们可以这样认为:一个url地址,它用于描述一个网络上的资源,而http中的get、post、put、delete就对于着这个资源的查、改、增、删4个操作,get一般用于获取/查询资源信息。 -
心知天气的api(可访问,返回json数据):
https://api.seniverse.com/v3/weather/now.json?key=smtq3n0ixdggurox&location=beijing&language=zh-Hans&unit=c
-
url的格式:
协议类型://主机名(或者叫域名)[:端口号(可选)]/文件路径/ [?查询(可选)]协议:https 域名:api.seniverse.com 文件路径:v3/weather/now.json 查询:key=smtq3n0ixdggurox&location=beijing&language=zh-Hans&unit=c
-
HTTP 消息结构: 【参考菜鸟教程】
客户端请求消息
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。
服务器响应消息
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
-
抓包解析:
下面使用stream这个app软件来对心知天气的提供的api进行抓包解析:api: https://api.seniverse.com/v3/weather/now.json?key=smtq3n0ixdggurox&location=beijing&language=zh-Hans&unit=c
-
get请求
get请求的格式按照这个图来对照,即可一目了然
请求方法是GET URL是/v3/weather/now.json?key=smtq3n0ixdggurox&location=beijing&language=zh-Hans&unit=c /*get请求的数据会附在url之后(就是把数据放置在http协议头中),以'?'分割url和传输数据,参数之间以’&'相连*/ 协议版本是HTTP/1.1 请求头部: 【主机名】 Host: api.seniverse.com\r\n /*剩下的几个我们不需要,他们是网页和请求设备的描述*/
将对应信息放到方框里面:
最后写成字符串的形式:"GET /v3/weather/now.json?key=smtq3n0ixdggurox&location=beijing&language=zh-Hans&unit=c HTTP/1.1\r\nHost:api.seniverse.com\r\n\r\n"
-
使用esp8266创建tcp连接后发送这个字符串,服务器会返回json格式的数据,然后在进行json解析就可以了。
Esp8266 -- 心知天气get请求及url讲解说明
最新推荐文章于 2025-05-21 19:33:32 发布