位置导航: ESP8266库 / ESP8266HTTPClient库 / 本页
说明
此函数用于ESP8266使用HTTP协议通过网络向服务器发送请求。本函数可以自定义请求方法类型,如 GET、POST等。
语法
sendRequest(type, payload)
sendRequest(type, payload, size)
sendRequest(type, stream, size)
参数
type: 发送请求的类型,可以是”GET”、”POST”等。参数类型: const char *
payload: 请求所发送的数据信息(该信息置于请求体中被发送)。该参数可使用字符串类型。(使用GET作为请求方法时,此参数可以省略)。
size: 请求所发送的数据字节数(此参数为可选参数,类型:size_t )。
stream: 数据流对象
返回值
服务器状态码
以下是常见的HTTP状态码:
– 200 – 请求成功
– 301 – 资源(网页等)被永久转移到其它URL
– 404 – 请求的资源(网页等)不存在
– 500 – 内部服务器错误
示例程序
关于本函数的具体使用方法,请参考以下代码,尤其是代码中高亮的语句部分。
您将以下示例程序的WiFi连接信息修改后并且将本示例程序上传ESP8266开发板后,开发板随即会自动连接WiFi。WiFi连接成功后,ESP8266将会向http://quan.suning.com/getSysTime.do发送HTTP请求并通过串口监视器将响应信息通过串口监视器显示出来。
以下是本程序控制下,ESP8266发送的HTTP请求信息:
1 2 3 4 5 6 7 8 |
POST /getSysTime.do HTTP/1.1 Host: quan.suning.com User-Agent: ESP8266HTTPClient Connection: keep-alive Accept-Encoding: identity;q=1,chunked;q=0.1,*;q=0 Content-Length: 9 date_test |
其中HTTP请求方法POST即是通过以下程序中的http.sendRequest("POST", "date_test")
语句来实现的。该语句的第一个参数设置了HTTP请求方法为POST。另外我们可以看到在以上的请求信息中,请求体部分包含有date_test。该信息即是通过http.sendRequest("POST", "date_test")
语句的第二个参数实现的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : HTTPClient_sendRequest 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : Dapenson 日期/Date(YYYYMMDD) : 20200325 程序目的/Purpose : 以苏宁易购的获取时间的公共api为例子,发起HTTP请求,并将获取到的数据信息打印到串口监视器中 具体HTTP请求可参考自定义函数http_POST内容 ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/ ***********************************************************************/ #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> //以苏宁易购api为例子获取时间数据 //#define URL "http://quan.suning.com/getSysTime.do" #define URL "http://192.168.0.110" //设置你的wifi接入信息 #ifndef STASSID #define STASSID "taichimaker" #define STAPSK "12345678" #endif void setup() { //初始化串口设置 Serial.begin(115200); Serial.println(); //开始连接wifi WiFi.begin(STASSID, STAPSK); //等待WiFi连接,连接成功打印IP while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected! IP address: "); Serial.println(WiFi.localIP()); } void loop() { if ((WiFi.status() == WL_CONNECTED)) { http_post(); } delay(10000); } void http_post() { //创建http对象 HTTPClient http; //配置请求地址 http.begin(URL); //HTTP请求 Serial.print("[HTTP] begin...\n"); //启动连接并发送HTTP请求。请求方法:POST。请求体信息:date_test int httpCode = http.sendRequest("POST", "date_test"); Serial.print("[HTTP] POST...\n"); //连接失败时 httpCode时为负 if (httpCode > 0) { //将服务器响应头打印到串口 Serial.printf("[HTTP] POST... code: %d\n", httpCode); //将从服务器获取的数据打印到串口 if (httpCode == HTTP_CODE_OK) { const String& payload = http.getString(); Serial.println("received payload:\n<<"); Serial.println(payload); Serial.println(">>"); } } else { Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str()); } //关闭http连接 http.end(); } |
相关内容
位置导航: ESP8266库 / ESP8266HTTPClient库 / 本页