ESP8266HttpClient library issue

I'm unable to make this ESP8266HttpClient sketch work for ESP8266 (NodeMCU 1.0 (ESP-12E Module)). It's the BasicHttpClient example sketch, with just added API details, which I redacted (URL and API key). API credentials isn't the problem, as I can get the results just fine with an ESP32 (with HttpClient library) and also with Postman. This one, however, returns code 400. I suspect the issue is related to adding the headers, as those two lines are the only additions to the example sketch, but I'm not sure where else to put them. Thanks all!

/**
   BasicHTTPClient.ino

    Created on: 24.05.2015

*/

#include <Arduino.h>

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

#include <ESP8266HTTPClient.h>

#include <WiFiClient.h>

ESP8266WiFiMulti WiFiMulti;

void setup() {

  Serial.begin(115200);
  // Serial.setDebugOutput(true);

  Serial.println();
  Serial.println();
  Serial.println();

  for (uint8_t t = 4; t > 0; t--) {
    Serial.printf("[SETUP] WAIT %d...\n", t);
    Serial.flush();
    delay(1000);
  }

  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP("SSID", "PASSWORD");

}

void loop() {
  // wait for WiFi connection
  if ((WiFiMulti.run() == WL_CONNECTED)) {

    WiFiClient client;

    HTTPClient http;

    Serial.print("[HTTP] begin...\n");
    if (http.begin(client, "URL")) {  // HTTP
      http.addHeader("Content-Type", "API_KEY");
      http.addHeader("Accept", "application/json");

      Serial.print("[HTTP] GET...\n");
      // start connection and send HTTP header
      int httpCode = http.GET();

      // httpCode will be negative on error
      if (httpCode > 0) {
        // HTTP header has been send and Server response header has been handled
        Serial.printf("[HTTP] GET... code: %d\n", httpCode);

        // file found at server
        if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
          String payload = http.getString();
          Serial.println(payload);
        }
      } else {
        Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
      }

      http.end();
    } else {
      Serial.printf("[HTTP} Unable to connect\n");
    }
  }

  delay(10000);
}

this is not a valid URL for a HTTP GET request

I have redacted the actual URL and API before posting it to this forum. The actual URL and API works fine in an ESP32 module and Postman software. It only doesn't work in ESP8266.

use a valid content-type and accept header

How can I do that?

sorry. GET request doesn't need content-type

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.