Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Sample_HTTPClient Sample_HTTPClient LWM2M_NanoService_Ethernet LWM2M_NanoService_Ethernet ... more
Fork of HTTPClient by
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, committed 2016-12-17
- Comitter:
- WiredHome
- Date:
- Sat Dec 17 15:19:55 2016 +0000
- Parent:
- 36:a5c13e512b78
- Child:
- 38:2ef07232f65c
- Commit message:
- Integrated the Json interface.
Changed in this revision
--- 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;
--- a/HTTPClient.h Tue Jan 26 11:44:35 2016 +0000 +++ b/HTTPClient.h Sat Dec 17 15:19:55 2016 +0000 @@ -195,5 +195,6 @@ #include "data/HTTPText.h" #include "data/HTTPMap.h" #include "data/HTTPFile.h" +#include "data/HTTPJson.h" #endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/data/HTTPJson.cpp Sat Dec 17 15:19:55 2016 +0000
@@ -0,0 +1,41 @@
+/* HTTPJson.cpp */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "HTTPJson.h"
+
+#define OK 0
+
+using std::strncpy;
+
+HTTPJson::HTTPJson(char* json_str) : HTTPText(json_str)
+{
+
+}
+
+HTTPJson::HTTPJson(char* json_str, size_t size) : HTTPText(json_str,size)
+{
+
+}
+
+/*virtual*/ int HTTPJson::getDataType(char* type, size_t maxTypeLen) //Internet media type for Content-Type header
+{
+ strncpy(type, "application/json", maxTypeLen-1);
+ type[maxTypeLen-1] = '\0';
+ return OK;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/data/HTTPJson.h Sat Dec 17 15:19:55 2016 +0000
@@ -0,0 +1,46 @@
+/* HTTPJson.h */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef HTTPJSON_H_
+#define HTTPJSON_H_
+
+#include "HTTPText.h"
+
+/** A data endpoint to store JSON text
+*/
+class HTTPJson : public HTTPText
+{
+public:
+ /** Create an HTTPJson instance for output
+ * @param json_str JSON string to be transmitted
+ */
+ HTTPJson(char* json_str);
+
+ /** Create an HTTPText instance for input
+ * @param json_str Buffer to store the incoming JSON string
+ * @param size Size of the buffer
+ */
+ HTTPJson(char* json_str, size_t size);
+
+protected:
+ virtual int getDataType(char* type, size_t maxTypeLen); //Internet media type for Content-Type header
+};
+
+#endif /* HTTPJSON_H_ */
