位置导航: ESP8266库 / WiFiClientSecure库 / 本页
说明
parseInt函数可用于从设备接收到的数据中寻找整数数值。
请留意,WiFiClientSecure对象在处理或发送网络数据时,可以通过调用Stream类中的函数来实现。本函数即是Stream类中的一员。
语法
httpsClient.parseInt()
参数
无
返回值
在输入信息中找到的整数数值。类型:long
示例程序
此程序用于演示如何使用esp8266作为互联网客户端向网站服务器发送https请求,并且使用find函数在网站服务器响应的信息中寻找“Date”字符串。如果找到“Date”字符串,则进一步使用parseInt函数来寻找“Date”字符串后面的第一个数字。由于标准服务器相应信息中“Date”字符串后面的第一个数字信息即是当前服务器的日期信息中的”日”数值。因parseInt函数寻找到的数字即是服务器的日期信息中的”日”数值。
关于本函数的具体使用方法,请参考以下代码,尤其是代码中高亮的语句部分。
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 129 130 131 132 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : ESP8266-WiFiClientSecure-parseInt 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 20200420 程序目的/Purpose : 此程序用于演示如何使用esp8266作为互联网客户端向网站服务器发送https请求, 并且使用find函数在网站服务器响应的信息中寻找“Date”字符串。如果找到“Date”字符串,则进一步 使用parseInt函数来寻找“Date”字符串后面的第一个数字。由于标准服务器相应信息中“Date”字符串 后面的第一个数字信息即是当前服务器的日期信息中的"日"数值。因此parseInt函数寻找到的数字即是 服务器的日期信息中的"日"数值。 注意:出于安全原因,网站服务器会定期更新证书指纹信息。因此本程序 中的证书指纹可能已经过期。请使用浏览器获取最新的服务器证书指纹 并复制粘贴到程序中相应位置。如需了解如何执行这一操作,请参考太极创客网站中 “获取网站证书指纹”页面(网址见下): 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."); int day = httpsClient.parseInt(); Serial.print("day = ");Serial.println(day); break; } } } Serial.println("Now disconect from the server..."); //操作结束,断开服务器连接 httpsClient.stop(); Serial.println("closing connection"); } |
位置导航: ESP8266库 / WiFiClientSecure库 / 本页