MN316 OpenCPU丨HTTP使用介紹

HTTP(Hyper ?Text ?Transfer ?Protocol)即超文本傳輸協議,是一個簡單的請求-響應協議,通常運行在TCP之上,它指定了客戶端可能發送給服務器消息類型以及得到什么類型響應。HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)即超文本傳輸安全協議,在HTTP的基礎下加入SSL,是以安全為目標的HTTP通道。這兩種協議目前廣泛運用于物聯網設備中,是物聯網工程師必備的技能。本文從函數接口、OpenCPU demo解析、注意事項三個方面對MN316 OpenCPU的HTTP demo及HTTPS demo進行解析。

、函數接口介紹

HTTP應用實例流程圖如下

圖1 HTTP業務流程圖

1.1創建客戶端實例

連接HTTP首先需要創建一個客戶端實例。

圖2 創建客戶端實例

①url:即服務器的地址;

②callback:即客戶端相關的回調函數,可以為空;

③handle:實例句柄。

1.2客戶端配置

同時對于此客戶端實例進行相應的參數配置。

圖3 客戶端參數設置

①handle:實例句柄(客戶端);

②cfg:客戶端配置參數(具體參數如下)。

圖4 客戶端可配參數

1.3?發送請求

接下來選擇HTTP請求類型。

圖5 發送請求

①handle:實例句柄(客戶端);

②param:發送請求的參數(具體如下)。

圖6 同步接口輸入參數

請求類型又分為:GET請求,請求指定的頁面信息;POST請求,向指定資源提交數據;PUT請求,向服務器指定的位置上傳最新的內容;DELETE請求,請求服務器刪除Request-URL資源;HEAD請求,用于獲取報頭信息。

圖7 HTTP請求類型

圖8 同步接口輸入參數

③response:HTTP請求所返回的結果及存放在此,其具體結構如下。

圖9 同步接口響應數據

1.4?釋放相應數據

得到結果后,釋放數據。

圖10 釋放響應數據接口

1.5?HTTPS請求

如果對安全性要求較高,則使用HTTPs來建立連接發送請求。具體實現方法參照上述HTTP應用實例流程,需注意,第②步配置參數時要將ssl_enable值設為1使能,在第③步前需添加一個設置ssl證書的步驟。

圖11 配置SSL參數

①ssl_id:同cm_HTTPclient_cfg_t中的ssl_id索引;

②type:ssl配置類型,具體有如下所示。

圖12 SSL配置類型

③value:ssl配置參數(即證書)格式如下。

圖13 根證書

1.6?其他函數介紹

①刪除客戶端實例;

圖14 刪除客戶端實例

②終止HTTP連接;

圖15 終止HTTP連接

③獲取響應結果碼。

圖16 獲取響應結果

二、OpenCPU demo解析

標準版SDK的demo中提供了6個與HTTP相關的測試項。

圖17 HTTP調用示例

在開始之前,需要先將服務器與相應路徑設置好,本文示例為:

圖18 HTTP設置服務器路徑

2.1 HTTP示例

GET/PUT/POST/DELTE整個流程相似,這里用GET做解析。

圖19 HTTP GET Demo代碼

根據上文介紹,一次請求主要分為4步,本實例完整地體現出這四步。

①創建一個客戶端實例;

圖20 創建客戶端實例

②對這個客戶端實例進行參數配置;

圖21 配置客戶端參數

③發送具體請求,得到返回結果;

④釋放相應數據。

圖22 釋放相應數據

測試結果如下圖。

圖23 測試結果圖

成功對HTTP服務器發送了get請求。

2.2 HTTPS 無證書加密測試

調用HTTPS的請求示例API接口:CM:HTTP:HTTPSGETTEST

圖24 HTTPS配置參數

HTTPS GET與前面HTTP?GET的主要區別是在客戶端配置階段ssl使能。

圖25 HTTPS客戶端配置參數

以及配置了ssl,但是此處是為了無證書加密測試,無身份驗證,所以ssl實際上是空的。

圖26 配置無證書方式加密

執行結果如下圖

圖27 HTTPS 無證書方式測試結果

2.3 HTTPS CA證書加密測試

這里就將上一節中ssl配置改為CA證書驗證,并添加CA證書。

圖28 添加CA證書

執行結果如下圖:

圖29 添加CA證書執行結果

可以看到,收到響應內容與沒有身份驗證時的數據并不相同,差異主要體現在報頭(header)的長度以及請求的內容(content)上。

、注意事項

  1. 在調用函數接口前,需確認模組是否成功駐網,并確認已經配置好服務器與相對路徑,否則可能導致調用函數接口無法收到正確的返回。
  2. demo中優先使用IPV6 DNS來解析,而有些SIM卡對于IPV6 DNS服務器請求會產生異常失敗,這時將HTTP參數中dns_priority 設置為1,即將dns解析設置為IPV4優先,再重新測試一下。

圖30 HTTP 可配參數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/210927.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210927.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210927.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp使用v-html調用接口,富文本圖片 視頻自適應大小

前端獲取到后臺數據 不做處理 就會出現下面問題 圖片 視頻超出視圖顯示不全 處理 //info 是富文本 <view v-ifinfo v-htmlreplaceWhite(info)></view>調用下面方法 replaceWhite(html) { // 處理富文本默認圖片&#xff0c;視頻大小let newContent html.replace…

Nestjs聯合Typeorm操作Mysql數據庫

創建項目 // 安裝腳手架(只需要安裝一次,因為這個是全局的) npm i -g nestjs/cli // 創建項目 nest new project-name // (該過程有個選擇包管理工具的,我選的yarn)啟動項目 yarn run start:dev // 可以在瀏覽器訪問localhost:3000 輸出helloWorld安裝typeorm,mysql2和nestj…

藍橋小白賽1

&#x1f469;?&#x1f3eb; 地址 1. 蘑菇炸彈 &#x1f469;?&#x1f3eb; 蘑菇炸彈 &#x1f389; AC code import java.util.Scanner;public class Main {public static void main(String[] args){Scanner sc new Scanner(System.in);int n sc.nextInt();int[] a …

d8week17

Week7 lec17 TVD去asscess model &#xff08;本質 距離加權平均&#xff09;text 11.2A New Statistic: The Distance between Two Distributions text-11.11.1 數據拿到手&#xff0c;套路操作 -- 看hist分布2 total variation distance lec18lec19 lec17 TVD去asscess model…

使用NCNN在華為M5部署Yolov5

使用NCNN在華為M5平板部署Yolov5 一、NCNN二、下載解壓NCNN三、下載ncnn-android-yolov5工程四、下載Android Studio[前提已經配置了jdk版本]1、安裝NDK、Cmske&#xff0c;這個必須要安裝&#xff0c;2、安裝Android 五、構建工程六、修改源碼七、重新ysnc project八、安裝APP…

MySQL深入——8

Order by語句是如何工作的&#xff1f; 首先我們來創建一個表 CREATE TABLE t (id int(11) NOT NULL,city varchar(16) NOT NULL,name varchar(16) NOT NULL,age int(11) NOT NULL,addr varchar(128) DEFAULT NULL,PRIMARY KEY (id),KEY city (city) ) ENGINEInnoDB; 全字段…

SQL命令---刪除數據表

介紹 使用sql語句實現刪除數據表。 命令 drop table 表名;

Python實戰演練之python實現神經網絡模型算法

python實現神經網絡模型算法 今天&#xff0c;厾羅和大家分享用Python實現神經網絡模型算法&#xff0c;僅用于技術學習交流。 實現技巧 1.導入依賴庫 主要是安裝相關的依賴庫。本文實現的環境為&#xff1a;python 3.7。 from __future__ import division import math …

C語言聯合體

聯合體 聯合體聯合體基本概念聯合體特點聯合體內存結構圖 聯合體 聯合體基本概念 聯合體概念&#xff1a; 結構體&#xff08;struct&#xff09;是一種結構體類型或者復雜類型&#xff0c;它可以包含多個類型不同的成員另外一種和結構體非常類似的類型&#xff0c;叫做聯合…

GPT-4 變懶了?官方回復

你是否注意到&#xff0c;最近使用 ChatGPT 的時候&#xff0c;當你向它提出一些問題&#xff0c;卻得到的回應似乎變得簡短而敷衍了&#xff1f;對于這一現象&#xff0c;ChatGPT 官方給出了回應。 譯文&#xff1a;我們聽到了你們所有關于 GPT4 變得更懶的反饋&#xff01;我…

在HTML中插入音頻和視頻(詳解)

Hi i,m JinXiang ? 前言 ? 本篇文章主要介紹在HTML中插入音頻和視頻以及部分理論知識 &#x1f349;歡迎點贊 &#x1f44d; 收藏 ?留言評論 &#x1f4dd;私信必回喲&#x1f601; &#x1f349;博主收將持續更新學習記錄獲&#xff0c;友友們有任何問題可以在評論區留言 …

外匯交易中的MT4軟件優勢:解析軟件對交易的影響!

近年來&#xff0c;隨著金融科技的不斷發展&#xff0c;MT4軟件作為外匯交易領域的領先平臺&#xff0c;備受交易者青睞。本文將探討MT4軟件在外匯交易中的優勢以及對交易的影響&#xff0c;幫助讀者深入了解這一交易利器。 ### 1. MT4軟件概述 MetaTrader 4(簡稱MT4)是一款由M…

深度學習 時間序列回歸學習筆記

目錄 常用的深度學習時間序列回歸模型: ARIMA模型 ETS模型 效果評估

低多邊形3D建模動畫風格紋理貼圖

在線工具推薦&#xff1a; 3D數字孿生場景編輯器 - GLTF/GLB材質紋理編輯器 - 3D模型在線轉換 - Three.js AI自動紋理開發包 - YOLO 虛幻合成數據生成器 - 三維模型預覽圖生成器 - 3D模型語義搜索引擎 當談到游戲角色的3D模型風格時&#xff0c;有幾種不同的風格&#xf…

【Linux】make/Makefile --- 自動化構建項目的工具

目錄 一、make/Makefile的簡單使用 二、Makefile 的語法規則 三、實現的原理 3.1 make/Makefile識別文件新舊 3.2 .PHONY修飾的偽目標總是被執行 3.3 make/Makefile是具有依賴性的推導能力的 四、語法技巧 五、注意事項 Linux中自動化構建項目最簡單的方式&#xff1a;…

python樂觀鎖和悲觀鎖

在并發編程中&#xff0c;鎖是一種常用的機制&#xff0c;用于保護共享資源的訪問。樂觀鎖和悲觀鎖是兩種不同的鎖機制。 樂觀鎖&#xff1a;不會一開始就加鎖&#xff0c;在更新的時候&#xff0c;判斷一下在此期間別人是否修改了數據&#xff0c;若修改了不執行此操作&#…

軟件質量:建立信心的十大指標

. Bug 數量——可能按優先級或嚴重性排列 一般來說&#xff0c;錯誤的數量會在項目生命周期的中期開始增加。在截止日期之前的幾天或幾周&#xff08;取決于項目的規模&#xff09;&#xff0c;團隊將集中精力減少 bug 的數量&#xff0c;直到 bug 的數量達到某種漸近線。這個漸…

Nginx基礎篇:Nginx搭建、Nginx反向代理、文件服務器部署配置。

Nginx Linux系統安裝以及反向代理的配置 簡介優點nginx 環境安裝常用Nginx 命令nginx 文件服務器搭建 簡介 Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器&#xff0c;同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點…

如何把kubernetes pod中的文件拷貝到宿主機上或者把宿主機上文件拷貝到kubernetes pod中

1. 創建一個 Kubernetes Pod 首先&#xff0c;下面是一個示例Pod的定義文件&#xff08;pod.yaml&#xff09;&#xff1a; cat > nginx.yaml << EOF apiVersion: v1 kind: Pod metadata:name: my-nginx spec:containers:- name: nginximage: nginx EOF kubectl app…

LabelImg的使用及注意事項

LabelImg是一款開源的圖像標注工具&#xff0c;它主要用于標注目標檢測、語義分割和圖像分類等深度學習中需要的數據集。通過使用LabelImg&#xff0c;用戶可以快速、準確地為圖片中的目標添加標注信息&#xff0c;從而建立數據集。 使用步驟&#xff1a; 下載LabelImg&#x…