初めまして。
私は現在、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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。