1. 程式人生 > >NodeMCU網路請求http請求和Https請求的示例程式碼(C++開發)

NodeMCU網路請求http請求和Https請求的示例程式碼(C++開發)

沒什麼可說的就是開發中需要做https請求,但是幾乎沒有找到例子。最後就研究開原始碼標頭檔案、等文件。

實現了https請求。

看到過一個部落格用的#include <WiFiClientSecure.h>但是那個封裝有問題。請求返回特別慢。

後來看到NodeMCU有自己的https實現。使用起來特別順滑。特地獻上一篇部落格。

這是NodeMCU開原始碼中關於網路請求的原始碼標頭檔案:

https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h

再開發NodeMCU的時候遇到問題沒有解決方案,就要看原始碼了。

示例程式碼:

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

//定義全域性量
const char* ssid      = "xxxx"; //替換你的ssid
const char* password  = "123456";//替換你的密碼

//https configs
const char* host = "api.xxx.org";  //填寫你自己的域名
const int httpsPort = 443;  //這是https請求標準埠
// Use web browser to view and copy  
// SHA1 fingerprint of the certificate  
//把你需要呼叫的請求地址用瀏覽器訪問,然後開啟除錯工具選擇“安全”即可看到對應請求的fingerprint,複製到這個地方即可
const char* fingerprint = "CB E2 9A F0 0B 28 4C EB 87 52 58 FD E3 EB 8C 54 9C 8E 0E F7";  

//http請求
void uploadSn(String sn) {
  HTTPClient http;
  http.begin("http://api.xxx.org/api/sn/" + sn); //HTTP請求地址
  int httpCode = http.GET();
  if (httpCode > 0) {//斷送有無返回值
    if (httpCode == HTTP_CODE_OK) {//判斷請求是正確
      String payload = http.getString();
      Serial.println(payload);
    }
  } else {//如果請求不成功,打印出錯誤資訊
    Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
  }
  http.end();
}

//https請求
void callHttps2(String sn) {
   HTTPClient http;
    String url = "/api/sn/" + sn;
  Serial.print("requesting URL: ");  
  Serial.println(url);  
  
  http.begin(host, httpsPort, url, fingerprint);  
  int httpCode = http.GET();
  if (httpCode > 0) {//斷送有無返回值
    if (httpCode == HTTP_CODE_OK) {//判斷請求是正確
      String payload = http.getString();
      Serial.println(payload);
    }
  } else {//如果請求不成功,打印出錯誤資訊
    Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
  }
  http.end();
}

//初始化
void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
  }
  //根據自己的邏輯及介面呼叫請求函式
}

void loop() {
   delay(500);
}

相關推薦

NodeMCU網路請求http求和Https請求示例程式碼C++開發

沒什麼可說的就是開發中需要做https請求,但是幾乎沒有找到例子。最後就研究開原始碼標頭檔案、等文件。實現了https請求。看到過一個部落格用的#include <WiFiClientSecure.h>但是那個封裝有問題。請求返回特別慢。後來看到NodeMCU有自

發送http求和https請求的工具類

stack urlencode array dpa pre public char set new t package com.haiyisoft.cAssistant.utils; import java.io.IOException;import java.util.A

android開發http求和https請求有什麼區別

① http效率更高,https安全性更高。 ② http是超文字傳輸協議,https是安全超文字傳輸協議, ③ http資訊是以明文方式傳遞,https是使用ssl加密傳輸協議傳輸資料,也就是通過第三方工具可以擷取篡改http傳輸的資料,而https即使截獲了沒有金鑰也白

Charles抓包手機求和Https請求

1、開啟Charles,在Proxy裡面點選Proxy Settings 2、在Proxy Settings的 Proxies新增埠 3、設定手機WLAN(注意Charles和手機連線的WIFi需在同一區域網) 4、長按連線的WIFI,出現修改網路,點選修改網路,點選顯示高階選項 5、

http 方式請求pos求和get請求,認證方式 使用者名稱密碼

利用apache包請求get和post請求,使用者名稱和密碼認證,使用者名稱密碼填則認證,不填測不認證 利用maven構建專案 需要匯入一個包   <dependency> <groupId>org.apache.httpcomponents&l

php 網路請求 get求和post請求

程式碼記錄 <?php header('content-type:application:json;charset=utf8'); header('Access-Control-Allow-Origin:*'); //header('Access-Control-

Struts2 攔截器處理普通Http求和Ajax請求時攔截配置

近期發現以前的系統中存在一個如下的Bug Case:       在Session過期時,執行頁面的ajax請求時,無法正常跳轉到session過期提示頁面,系統直接hold在那裡不動,只有點選左側選單時,系統才能跳轉到session過期提示頁面。       經過調研

關於http求和webservice請求的瞭解?

最近公司兩個系統需要對接,但是系統和系統之間傳輸的資料量很大,使用http的 get/post 非常的麻煩,因此,我們的專案總監讓我在網上看下webservice的請求。 剛剛開始的時候,對兩個感覺很模糊,因為不管怎麼樣,畢竟他們的功能都差不多,都是請求資料,帶引數。但是今

Http的Get求和Post請求的區別.md

1 Http的Get請求和Post請求的區別 get是從伺服器獲取資料,post是傳送資料到伺服器。 get引數通過URL傳遞,post引數放在Request body中。 所以:get比post更不安全,因為引數直接暴露在URL上,所以不能用來傳遞敏感

http請求,get求和post請求體以及響應體

一、http請求 1.Http請求格式 Http請求即客戶端傳送給伺服器的請求。該請求的內容格式如下所示: 請求首行 請求頭資訊 空行 請求正文,也稱請求體 2.使用HttpWatch抓包工具 請求資訊詳細內容如下: GET /Example03/ HTTP/1.1 Acc

web 會話超時,請求http求和ajax非同步請求處理

@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) throws IOException, ServletException {HttpServletRe

http get求和post請求的格式區別

       寫了一個cgi, 支援get請求, 在fiddler中重放get請求, 一切正常, 引數格式如下: GET /cgi-bin/my_cgi?uin=12345&appID=20

java呼叫HTTP介面Get求和Post請求

前提: id和name是傳入的引數 瀏覽器訪問介面: java程式碼呼叫Http介面程式碼如下(程式碼中註釋分為兩部分:處理get請求和post請求): package com.inspur.OKHTTP; import java.io.BufferedRe

HTTP深入淺出之http求和15中以上的請求方式

HTTP(HyperText Transfer Protocol)是一套計算機通過網路進行通訊的規則。計算機專家設計出HTTP,使HTTP客戶(如Web瀏覽器)能夠從HTTP伺服器(Web伺服器)請求資訊和服務,HTTP目前協議的版本是1.1.HTTP是一種無狀態的協議,無狀態是指Web瀏覽器和Web伺服器

面試題 —— HTTP請求中get求和post請求的區別以及底層原理

GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。 最直觀的區別就是GET把引數包含在URL中,POST通過request body傳遞引數。 你可能自己寫過無數個GET和POST請求,或者已經看過很多權威網站總結出的

HTTP的GET求和POST請求

1、HTTP請求概述         在前面有一篇文章對HTTP協議有詳細的描述,這裡就不再過多的做說明,只是簡單的作為這篇文章的引子。         HTTP協議又被稱為超文字傳輸協議,它的的設計目的是保證客戶機與伺服器之間的通訊。HTTP 的工作方式是客戶端與伺服器之

swift3.0請求https封裝工具類(get求和post請求)

1.首先工具類內部需要遵守URLSessionDataDelegate代理 2.實現代理方法程式碼如下: func urlSession(_ session:URLSession, didRe

swift開發網路篇—利用NSURLConnection GET求和POST請求

一、GET請求和POST請求簡單說明     @IBOutletweakvar userName:UITextField! @IBOutletweakvar userPwd:UITextField! @IBOutletweakvar logonResult:UILab

HttpClient的post求和get請求

ktr resp logs trac dataset 字符串 catch mes style handler 1 private int page = 1; 2 3 private Handler mHandler=new Handler(){

get求和post請求的區別

font size 緩存 區別 post ont 服務 請求參數 瀏覽器 1.get是從服務器獲取數據,post是向服務器提交數據2.get請求的參數在url後面,post請求的參數在http body裏面3.get請求數據量在2KB以內,post請求的數據量比較大4.ge