From 59b4c82d60854234a80e4fa3bd0d1619e9690700 Mon Sep 17 00:00:00 2001
From: Markus Sattler <help.markus+git@gmail.com>
Date: Wed, 25 Nov 2015 12:40:25 +0100
Subject: [PATCH] add new Basic example based of getString note: keep in mind
 the ram usage!

---
 .../BasicHttpClient/BasicHttpClient.ino       | 38 +------
 .../StreamHttpClient/StreamHttpClient.ino     | 98 +++++++++++++++++++
 2 files changed, 102 insertions(+), 34 deletions(-)
 create mode 100644 libraries/ESP8266httpClient/examples/StreamHttpClient/StreamHttpClient.ino

diff --git a/libraries/ESP8266httpClient/examples/BasicHttpClient/BasicHttpClient.ino b/libraries/ESP8266httpClient/examples/BasicHttpClient/BasicHttpClient.ino
index 99df11e76..0cdceb975 100644
--- a/libraries/ESP8266httpClient/examples/BasicHttpClient/BasicHttpClient.ino
+++ b/libraries/ESP8266httpClient/examples/BasicHttpClient/BasicHttpClient.ino
@@ -43,50 +43,20 @@ void loop() {
 
         USE_SERIAL.print("[HTTP] begin...\n");
         // configure traged server and url
-        http.begin("192.168.1.12", 80, "/test.html");
+        //http.begin("192.168.1.12", 443, "/test.html", true, "7a 9c f4 db 40 d3 62 5a 6e 21 bc 5c cc 66 c8 3e a1 45 59 38"); //HTTPS
+        http.begin("192.168.1.12", 80, "/test.html"); //HTTP
 
         USE_SERIAL.print("[HTTP] GET...\n");
         // start connection and send HTTP header
         int httpCode = http.GET();
         if(httpCode) {
             // HTTP header has been send and Server response header has been handled
-
             USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);
 
             // file found at server
             if(httpCode == 200) {
-
-                // get lenght of document (is -1 when Server sends no Content-Length header)
-                int len = http.getSize();
-
-                // create buffer for read
-                uint8_t buff[128] = { 0 };
-
-                // get tcp stream
-                WiFiClient stream = http.getStream();
-
-                // read all data from server
-                while(http.connected() && (len > 0 || len == -1)) {
-                    // get available data size
-                    size_t size = stream.available();
-
-                    if(size) {
-                        // read up to 128 byte
-                        int c = stream.readBytes(buff, ((size > sizeof(buff)) ? sizeof(buff) : size));
-
-                        // write it to Serial
-                        USE_SERIAL.write(buff, c);
-
-                        if(len > 0) {
-                            len -= c;
-                        }
-                    }
-                    delay(1);
-                }
-
-                USE_SERIAL.println();
-                USE_SERIAL.print("[HTTP] connection closed or file end.\n");
-
+                String payload = http.getString();
+                USE_SERIAL.println(payload);
             }
         } else {
             USE_SERIAL.print("[HTTP] GET... faild, no connection or no HTTP server\n");
diff --git a/libraries/ESP8266httpClient/examples/StreamHttpClient/StreamHttpClient.ino b/libraries/ESP8266httpClient/examples/StreamHttpClient/StreamHttpClient.ino
new file mode 100644
index 000000000..a9aa981be
--- /dev/null
+++ b/libraries/ESP8266httpClient/examples/StreamHttpClient/StreamHttpClient.ino
@@ -0,0 +1,98 @@
+/**
+ * StreamHttpClient.ino
+ *
+ *  Created on: 24.05.2015
+ *
+ */
+
+#include <Arduino.h>
+
+#include <ESP8266WiFi.h>
+#include <ESP8266WiFiMulti.h>
+
+#include <ESP8266httpClient.h>
+
+#define USE_SERIAL Serial
+
+ESP8266WiFiMulti WiFiMulti;
+
+void setup() {
+
+    USE_SERIAL.begin(115200);
+   // USE_SERIAL.setDebugOutput(true);
+
+    USE_SERIAL.println();
+    USE_SERIAL.println();
+    USE_SERIAL.println();
+
+    for(uint8_t t = 4; t > 0; t--) {
+        USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
+        USE_SERIAL.flush();
+        delay(1000);
+    }
+
+    WiFiMulti.addAP("SSID", "PASSWORD");
+
+}
+
+void loop() {
+    // wait for WiFi connection
+    if((WiFiMulti.run() == WL_CONNECTED)) {
+
+        httpClient http;
+
+        USE_SERIAL.print("[HTTP] begin...\n");
+        // configure traged server and url
+        http.begin("192.168.1.12", 80, "/test.html");
+
+        USE_SERIAL.print("[HTTP] GET...\n");
+        // start connection and send HTTP header
+        int httpCode = http.GET();
+        if(httpCode) {
+            // HTTP header has been send and Server response header has been handled
+
+            USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);
+
+            // file found at server
+            if(httpCode == 200) {
+
+                // get lenght of document (is -1 when Server sends no Content-Length header)
+                int len = http.getSize();
+
+                // create buffer for read
+                uint8_t buff[128] = { 0 };
+
+                // get tcp stream
+                WiFiClient * stream = http.getStream();
+
+                // read all data from server
+                while(http.connected() && (len > 0 || len == -1)) {
+                    // get available data size
+                    size_t size = stream->available();
+
+                    if(size) {
+                        // read up to 128 byte
+                        int c = stream->readBytes(buff, ((size > sizeof(buff)) ? sizeof(buff) : size));
+
+                        // write it to Serial
+                        USE_SERIAL.write(buff, c);
+
+                        if(len > 0) {
+                            len -= c;
+                        }
+                    }
+                    delay(1);
+                }
+
+                USE_SERIAL.println();
+                USE_SERIAL.print("[HTTP] connection closed or file end.\n");
+
+            }
+        } else {
+            USE_SERIAL.print("[HTTP] GET... faild, no connection or no HTTP server\n");
+        }
+    }
+
+    delay(10000);
+}
+