Fixed custom headers and Basic authorization, added support for redirection, functional file download interface can be used for SW updates and more.

Dependents:   Sample_HTTPClient Sample_HTTPClient LWM2M_NanoService_Ethernet LWM2M_NanoService_Ethernet ... more

Fork of HTTPClient by Vincent Wochnik

More recent changes - added iCal processing.

Derivative of a derivative, however this one works when it comes to supplying Basic authorization to access a protected resource. Some additional changes to the debug interface to clean it up for consistency with many other components I have.

Revision:
37:74c1c4527f70
Parent:
36:a5c13e512b78
Child:
38:2ef07232f65c
--- a/HTTPClient.cpp	Tue Jan 26 11:44:35 2016 +0000
+++ b/HTTPClient.cpp	Sat Dec 17 15:19:55 2016 +0000
@@ -271,10 +271,11 @@
 
         //Send data (if available)
         if( pDataOut != NULL ) {
-            DBG("Sending data");
+            DBG("Sending data [%s]", buf);
             while(true) {
                 size_t writtenLen = 0;
                 pDataOut->read(buf, CHUNK_SIZE, &trfLen);
+                DBG("  trfLen: %d", trfLen);
                 if( pDataOut->getIsChunked() ) {
                     //Write chunk header
                     char chunkHeader[16];
@@ -564,15 +565,16 @@
     if(len == 0) {
         len = strlen(buf);
     }
-    DBG("send(%s,%d)", buf, len);
+    DBG("send(\r\n%s,%d)", buf, len);
     size_t writtenLen = 0;
 
     if(!m_sock.is_connected()) {
         WARN("Connection was closed by server");
         return HTTP_CLOSED; //Connection was closed by server
     }
-
+    DBG("a");
     m_sock.set_blocking(false, m_timeout);
+    DBG("b");
     int ret = m_sock.send_all(buf, len);
     if(ret > 0) {
         writtenLen += ret;
@@ -583,7 +585,6 @@
         ERR("Connection error (send returned %d)", ret);
         return HTTP_CONN;
     }
-
     DBG("Written %d bytes", writtenLen);
     return HTTP_OK;
 }
@@ -592,6 +593,8 @@
 {
     char* schemePtr = (char*) url;
     char* hostPtr = (char*) strstr(url, "://");
+    INFO("parseURL(%s,%s,%d,%s,%d,%d,%s,%d",
+        url, scheme, maxSchemeLen, host, maxHostLen, *port, path, maxPathLen);
     if(hostPtr == NULL) {
         WARN("Could not find host");
         return HTTP_PARSE; //URL is invalid
@@ -619,6 +622,8 @@
     } else {
         *port=0;
     }
+    INFO("  hostPtr: %s", hostPtr);
+    INFO("  hostLen: %d", hostLen);
     char* pathPtr = strchr(hostPtr, '/');
     if( hostLen == 0 ) {
         hostLen = pathPtr - hostPtr;