質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

2回答

2686閲覧

ESP32でHTTPs通信をしてサーバにJSON形式文をPOST

oh_tec-Masuyama

総合スコア0

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2022/05/07 00:54

初めまして。
私は現在、esp32にBG96(LTE通信モジュール)を乗せて,HTTPs通信をしております。その際、Json形式の文をサーバにPOSTしたいのですが、うまくいきません。原因は、sendHeader文がサーバ側で反映されていないためだと思われます。(添付画像参照)

responseStatusCode()文を送信するとエラーコード400が返ってきます。

どうすればJSON形式でサーバーにポストできるでしょうか

ino

1#include <TinyGsmClient.h> 2#include <ArduinoHttpClient.h> 3#include <ArduinoJson.h> 4 5const char server[] = "××.××××××.amazonaws.com"; 6const char resource[] = "/×××"; 7const int port = 443; 8 9SoftwareSerial LTE_M_shieldUART(RX, TX);//LTEモジュールの通信ピン 10TinyGsm modem(LTE_M_shieldUART); 11TinyGsmClient ctx(modem); 12HttpClient http(ctx,server, port); 13void setup{ 14 CONSOLE.begin(115200); 15/***************************************************** 16 17LTEモジュールネットワーク接続コード等は省略させていただきます。 18   19*****************************************************/ 20} 21void loop{ 22 23 /******************************************************* 24 25 Json文変換ライブラリでjson_stringを設定 26      ↓ 27 json_string={\"value1\":\"138.00000\",\"value2\":\"48.00000\"} 28 29 *******************************************************/ 30 31 http.beginRequest(); 32 http.post("/"); 33 CONSOLE.print("json形式で送る設定に変更:"); 34 http.sendHeader("Content-Type", "application/json"); 35 //http.put("/", "application/json",json_string ); 36 CONSOLE.println("完了"); 37 38 CONSOLE.print("Acceptヘッダー追加:"); 39 http.sendHeader("Accept", "application/json"); 40 //http.put("/", "application/json",json_string ); 41 CONSOLE.println("完了"); 42 43 CONSOLE.print("ヘッダーにAPIキー追加:"); 44 http.sendHeader("X-API-KEY", "×××××××××××××××"); 45 CONSOLE.println("完了"); 46 47 CONSOLE.print("BODYに緯度経度を送信:"); 48 http.beginBody(); 49 http.print(json_string); 50 CONSOLE.println("完了"); 51 52 http.endRequest(); 53 54//ここから添付画像 55 CONSOLE.println("-------ヘッダー一覧-------"); 56 while (http.headerAvailable()){ 57 String headerName = http.readHeaderName(); 58 String headerValue = http.readHeaderValue(); 59 CONSOLE.print("ヘッダー名:"); 60 CONSOLE.println(headerName); 61 CONSOLE.print("ヘッダー値:"); 62 CONSOLE.println(headerValue); 63 CONSOLE.println(""); 64 } 65 CONSOLE.println("------------------------"); 66}//ここまで添付画像 67 68int Status = http.responseStatusCode(); 69 CONSOLE.println(Status); //エラーコード400が返ってきてしまう 70

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

TinyGSMでbg96のhttpsはサポートされていなかったような気がします。
少し手間ですがATコマンドで直接制御するしかないかと...

投稿2022/06/11 07:46

dai987

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

HttpClient でなく、 HttpsClient を使うべきなのでは?

投稿2022/05/11 00:01

nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問