ESP8266 WiFiClient Simple HTTP GET

I am working on a simple problem of reading a webpage using the ESP8266 and the ESP8266WiFi library .

I have changed only a few lines in the example and do not know what the problem is. This is my code:

include <ESP8266WiFi.h> const char* ssid = "WiwoNET"; const char* password = "xxxxxxx"; const char* host = "https://pure-caverns-1350.herokuapp.com"; void setup() { Serial.begin(115200); delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } int value = 0; void loop() { delay(5000); ++value; Serial.print("connecting to "); Serial.println(host); // Use WiFiClient class to create TCP connections WiFiClient client; const int httpPort = 80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } // We now create a URI for the request String url = "/stan"; Serial.print("Requesting URL: "); Serial.println(url); // This will send the request to the server client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); delay(10); // Read all the lines of the reply from server and print them to Serial Serial.println("Respond:"); while(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line); } Serial.println(); Serial.println("closing connection"); } 

And what I see in the serial monitor:

 Connecting to WiwoNET ....... WiFi connected IP address: 192.168.0.111 connecting to https://pure-caverns-1350.herokuapp.com Requesting URL: /stan Informacja zwrotna: HTTP/1.1 400 Bad Request Connection: close Server: Cowboy Date: Thu, 03 Dec 2015 23:38:59 GMT Content-Length: 0 closing connection 

I watched the heroic magazines, and nothing is visible there. Thank you in advance for any help.

+6
source share
1 answer

You should have followed the example here: https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/examples/WiFiClient/WiFiClient.ino

There is one important part that you missed. The host value should not be added with a URI-style scheme, such as http:// or https:// . Look at the example again and use

 const char* host = "pure-caverns-1350.herokuapp.com"; 

instead.

You can very well understand what is happening under the hood of HTTP if you run curl -v http://pure-caverns-1350.herokuapp.com/stan in the console.

+8
source

All Articles