位置导航: ESP8266库 / WiFiClientSecure库 / 本页
说明
find函数可用于从设备接收到的数据中寻找指定字符串信息。当函数找到了指定字符串信息后将会立即结束函数执行并且返回“真”。否则将会返回“假”。
请留意,WiFiClientSecure对象在处理或发送网络数据时,可以通过调用Stream类中的函数来实现。本函数即是Stream类中的一员。
语法
httpsClient.find(target)
参数
target: 被查找字符串。允许使用String或char类型。
返回值
返回值类型为bool。当函数找到了指定字符串信息后将会立即结束函数执行并且返回“真”。否则将会返回“假”。
示例程序
此程序用于演示如何使用esp8266作为互联网客户端向网站服务器发送https请求,并且使用find函数在网站服务器响应的信息中寻找“Date”字符串。如果找到“Date”字符串,则通过串口监视器告知用户开发板已经找到了“Date”字符串。
关于本函数的具体使用方法,请参考以下代码,尤其是代码中高亮的语句部分。
注意:出于安全原因,网站服务器会定期更新证书指纹信息。因此本程序中的证书指纹可能已经过期。请使用浏览器获取最新的服务器证书指纹并复制粘贴到程序中相应位置。如需了解如何执行这一操作,请参考太极创客网站“查看网站证书指纹”页面。
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 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : ESP8266-WiFiClientSecure-find 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 20200420 程序目的/Purpose : 此程序用于演示如何使用esp8266作为互联网客户端向网站服务器发送https请求, 并且使用find函数在网站服务器响应的信息中寻找“Date”字符串。如果找到“Date”字符串,则通过 串口监视器告知用户开发板已经找到了“Date”字符串。 注意:出于安全原因,网站服务器会定期更新证书指纹信息。因此本程序 中的证书指纹可能已经过期。请使用浏览器获取最新的服务器证书指纹 并复制粘贴到程序中相应位置。如需了解如何执行这一操作,请参考太极创客网站中 “获取网站证书指纹”页面(网址见下): http://www.taichi-maker.com/homepage/iot-development/iot-dev-reference/esp8266-c-plus-plus-reference/http-client-secure/certificate-fingerprint/ ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ #include <ESP8266WiFi.h> #include <WiFiClientSecure.h> #include <ESP8266WebServer.h> //WiFi连接信息(注意:需要自行修改以下内容否则ESP8266无法连接WiFi) #define ssid "taichimaker" //WiFi名称 #define password "12345678" //WiFi密码 //测试HTTPS通讯的网站 const char *host = "cn.bing.com"; //HTTPS端口443 const int httpsPort = 443; //注意:出于安全原因,网站服务器会定期更新证书指纹信息。因此本程序 //中的证书指纹可能已经过期。请使用浏览器获取最新的服务器证书指纹 //并复制粘贴到此处。如需了解如何执行这一操作,请参考太极创客网站中 //“获取网站证书指纹”页面(网址见下): //http://www.taichi-maker.com/homepage/iot-development/iot-dev-reference/esp8266-c-plus-plus-reference/http-client-secure/certificate-fingerprint/ //以下两行语句为两种不同类型的fingerprint建立。 //const char fingerprint[] PROGMEM = "62914576dc0afac83c4804bcc2c1b700a61139fe"; const char *fingerprint = "62914576dc0afac83c4804bcc2c1b700a61139fe"; void setup() { Serial.begin(9600); WiFi.mode(WIFI_STA); //设置ESP8266为无线终端工作模式 WiFi.begin(ssid, password); //连接WiFi Serial.println(""); Serial.println("Connecting"); Serial.println(""); // 等待连接 while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } //成功连接后通过串口监视器显示WiFi名称以及ESP8266的IP地址。 Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); // 实现HTTPS通讯 httpsCom(); } void loop(){} void httpsCom(){ WiFiClientSecure httpsClient; //建立WiFiClientSecure对象 Serial.println(host); httpsClient.setBufferSizes(16000, 512); Serial.printf("Using fingerprint '%s'\n", fingerprint); httpsClient.setFingerprint(fingerprint); httpsClient.setTimeout(15000); delay(1000); Serial.println("HTTPS Connecting");Serial.println(""); int r=0; // 尝试连接服务器并等待 while((!httpsClient.connect(host, httpsPort)) && (r < 30)){ delay(100); Serial.print("."); r++; } // 连接超时后输出"连接失败"信息并返回 if(r==30) { Serial.println("Connection failed"); return; } else { // 连接成功则输出“连接成功”信息 Serial.println("Connected..."); } Serial.print("requesting: "); Serial.println(host); // 建立HTTPS请求信息字符串 String request = String("GET /a/check") + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n" + "\r\n"; // 向服务器发送请求 httpsClient.print(request); Serial.println("request sent"); // 检查服务器响应信息。通过串口监视器输出服务器状态码和响应头信息 // 从而确定ESP8266已经成功连接服务器 while (httpsClient.connected()) { if (httpsClient.available()){ if (httpsClient.find("Date")){ Serial.println("Found Date Info in Server Response."); break; } } } Serial.println("Now disconect from the server..."); //操作结束,断开服务器连接 httpsClient.stop(); Serial.println("closing connection"); } |
位置导航: ESP8266库 / WiFiClientSecure库 / 本页