位置导航: ESP8266库 / WiFiClient库 / 本页
说明
readStringUntil函数可用于从设备接收到的数据中读取信息。读取到的数据信息将以字符串形式返回。该函数在满足以下任一条件后都会停止函数执行并返回。
– 读取到指定终止字符
– 达到设定时间(可使用setTimeout来设置)
当函数读取到终止字符后,会立即停止函数执行。此时函数所返回的字符串为”终止字符”前的所有字符信息。
请留意,WiFiClient对象在处理或发送网络数据时,可以通过调用Stream类中的函数来实现。本函数即是Stream类中的一员。
语法
client.readStringUntil(terminator)
参数
terminator: 终止字符。用于设置终止函数执行的字符信息。设备在读取数据时一旦读取到此终止字符,将会结束函数执行。允许使用char类型。
返回值
接收到的数据,类型为字符串。
示例程序
此程序用于演示如何使用esp8266作为互联网客户端向www.example.com网站服务器发送http请求,并且将网站服务器响应的信息通过readStringUntil函数获取并且输出在屏幕中。
关于本函数的具体使用方法,请参考以下代码,尤其是代码中高亮的语句部分。
如需了解更多本示例程序的讲解内容,请参考太极创客团队制作的《零基础入门学用物联网》教程中的ESP8266-NodeMCU网络客户端向网络服务器发送HTTP请求
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 86 87 88 89 90 91 92 93 94 95 96 97 98 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : 3_5_1_http_request_basic 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 20200210 程序目的/Purpose : 此程序用于演示如何使用esp8266作为互联网客户端向www.example.com网站服务器发送http请求,并且将网站服务器响应的信息通过readStringUntil函数获取并且输出在屏幕中。 ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ #include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h> ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象 const char* host = "www.example.com"; // 网络服务器地址 const int httpPort = 80; // http端口80 void setup(){ Serial.begin(9600); Serial.println(""); wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1"); // 将需要连接的一系列WiFi ID和密码输入这里 wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); // ESP8266-NodeMCU再启动后会扫描当前网络 wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); // 环境查找是否有这里列出的WiFi ID。如果有 Serial.println("Connecting ..."); // 尝试进行wifi连接。 int i = 0; while (wifiMulti.run() != WL_CONNECTED) { delay(1000); Serial.print(i++); Serial.print(' '); } // WiFi连接成功后将通过串口监视器输出连接成功信息 Serial.println(""); Serial.print("Connected to "); Serial.println(WiFi.SSID()); // WiFi名称 Serial.print("IP address:\t"); Serial.println(WiFi.localIP()); // IP } void loop(){ // 发送HTTP请求 httpRequest(); delay(30000); } // 向服务器发送HTTP请求 void httpRequest(){ // 建立WiFi客户端对象,对象名称client WiFiClient client; // 建立字符串,用于HTTP请求 String httpRequest = String("GET /") + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n" + "\r\n"; // 通过串口输出连接服务器名称以便查阅连接服务器的网址 Serial.print("Connecting to "); Serial.print(host); // 连接网络服务器,以下段落中的示例程序为本程序重点1 // 请参考太极创客网站中关于本程序的讲解页面获取详细说明信息。网址: // http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/ if (client.connect(host, httpPort)){ Serial.println(" Success!"); // 连接成功后串口输出“Success”信息 client.print(httpRequest); // 向服务器发送合同谈判请求 Serial.println("Sending request: ");// 通过串口输出HTTP请求信息内容以便查阅 Serial.println(httpRequest); // 通过串口输出网络服务器响应信息, 以下段落中的示例程序为本程序重点2 // 请参考太极创客网站中关于本程序的讲解页面获取详细说明信息。网址: // http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/ Serial.println("Web Server Response:"); while (client.connected() || client.available()){ if (client.available()){ String line = client.readStringUntil('\n'); Serial.println(line); } } client.stop(); // 断开与服务器的连接 Serial.print("Disconnected from "); // 并且通过串口输出断开连接信息 Serial.print(host); } else{ // 如果连接不成功则通过串口输出“连接失败”信息 Serial.println(" connection failed!"); client.stop(); } } |
相关内容
— readString – 读取数据并保存为字符串 (Stream类)
— find – 在数据中寻找信息(Stream类)
— parseInt – 解析数据中的整数(Stream类)
位置导航: ESP8266库 / WiFiClient库 / 本页