HTTP POST с ESP32 Twilio Whatsapp - PullRequest
0 голосов
/ 19 июня 2020

Я использую Platformio с Visual Code, чтобы сделать несколько тестовых проектов ESP32. Я новичок в этом, поэтому мои знания по этому вопросу довольно скудны ^. ^

Моя проблема в том, что из того, что я знаю (возможно, ошибочно), Twilio API может возвращать (с GET) тип Json , но когда это POST, это должен быть только тип XML.

Я использую ESP32 с этим кодом:

#include <Arduino.h>
#include <HTTPClient.h>
#include <WiFi.h>
#include <ArduinoJson.h>

void SetupWifi();
void Callback(char *, byte*, unsigned int);
void Reconnect();

const char* password = "Testing4312";
const char* SSID = "T.T";

HTTPClient http;
WiFiClient wifiClient;
StaticJsonDocument<200> doc;

unsigned long lastMsg = 0;
char msg[50];
int value = 0;
char jsonOutput[256];

void setup() 
{
  pinMode(BUILTIN_LED, OUTPUT);
  Serial.begin(9600);

  delay(20);

  SetupWifi();
}

void loop() 
{

  if(WiFi.status()== WL_CONNECTED){   //Check WiFi connection status

    http.begin("https://timberwolf-mastiff-9776.twil.io/demo-reply");       
    http.addHeader("Content-Type", "application/json");

    const size_t CAPACITY = JSON_OBJECT_SIZE(1);
    StaticJsonDocument<CAPACITY> doc;

    JsonObject object = doc.to<JsonObject>();
    object["from"] = "whatsapp:+XXXXXXXXX";
    object["body"] = "Testing";
    object["to"] = "whatsapp:+XXXXXXXXXX";

    serializeJson(doc, jsonOutput);

    int codigo_respuesta = http.POST(String(jsonOutput));  


    if(codigo_respuesta>0){
      Serial.println("Código HTTP ► " + String(codigo_respuesta));   //Print return code

      if(codigo_respuesta == 200){
        String cuerpo_respuesta = http.getString();
        Serial.println("El servidor2 respondió ▼ ");
        Serial.println(cuerpo_respuesta);

      }

    }else{

     Serial.print("Error enviando POST, código: ");
     Serial.println(codigo_respuesta);

    }

    http.end();  //free

  }else{

     Serial.println("Error en la conexión WIFI");

  }

   delay(2000);
}


void SetupWifi()
{
  Serial.println("\nConectando a -> " + String(SSID) + "\n\n");

  //Start Connection
  WiFi.begin(SSID, password);

  while (WiFi.status() != WL_CONNECTED)
  {
    delay(250);
    Serial.print(".");
  }

  Serial.println("\n\nConexion Exitosa!!!\n\n");
}

Я искал крошечную XML библиотеку, но я не знаю, сработает ли это, потому что все, что я вижу, это библиотека API Twilio, которую я не могу использовать с моим ESP32 (или, может быть, да, я не уверен). Есть ли другой способ сделать это? Я думал как-нибудь реализовать библиотеку C ++ Curl для ESP32 и попробовать запрос curl, но кажется таким сложным.

Вот и все, 1 неделя, что я застрял с этой проблемой xD .

...