HTTP and HTTPS example application for Mbed OS 5
Dependencies: mbed-http
This application demonstrates how to make HTTP and HTTPS requests and parse the response from Mbed OS 5.
It consists of six example applications, which you can select in source/select-demo.h
:
- HTTP:
- Does a GET request to http:httpbin.org/status/418.
- Does a POST request to http:httpbin.org/post.
- HTTPS:
- Does a GET request to https:os.mbed.com/media/uploads/mbed_official/hello.txt.
- Does a POST request to https:httpbin.org/post.
- HTTP with socket re-use.
- HTTPS with socket re-use.
- HTTP over IPv6.
- HTTPS with chunked requests.
Response parsing is done through nodejs/http-parser.
Note: HTTPS requests do not work on targets with less than 128K of RAM due to the size of the TLS handshake. For more background see mbed-http.
To build
- If you're using WiFi, specify the credentials in
mbed_app.json
. - Build the project in the online compiler or using Mbed CLI.
- Flash the project to your development board.
- Attach a serial monitor to your board to see the debug messages.
Defining the network interface
This application uses the on-board network interface for your board. If you use an external network interface (f.e. a WiFi module) you need to add the driver to this project. Then, open network-helper.h
and specify which network driver to use.
More information is in the Mbed OS documentation under IP Networking.
Entropy (or lack thereof)
On all platforms that do not have the TRNG
feature, the application is compiled without TLS entropy sources. This means that your code is inherently unsafe and should not be deployed to any production systems. To enable entropy, remove the MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES
and MBEDTLS_TEST_NULL_ENTROPY
macros from mbed_app.json.
Flash size
Default flash size for HTTPS is very large, as the application is loading the default Mbed TLS configuration. To use a more optimized version, you can disable unused cypher suites and other Mbed TLS features with a custom configuration file. Create a new configuration file, then add in mbed_app.json
:
"MBEDTLS_CONFIG_FILE=\"mbedtls_config.h\""
to the macros
array.
Running tests
You can run the integration tests from this project via Mbed CLI.
- In
select-demo.h
set theDEMO
macro toDEMO_TESTS
. - Set your WiFi credentials in
mbed_app.json
. - Then run the tests via:
$ mbed test -v -n mbed-http-tests-tests-*
Tested on
- K64F with Ethernet.
- NUCLEO_F411RE with ESP8266 (not working on Mbed OS 5.12+)
- ODIN-W2 with WiFi.
- K64F with Atmel 6LoWPAN shield.
- DISCO-L475VG-IOT01A with WiFi (requires the wifi-ism43362 driver).
LICENSE@0:85fdc69bc10c, 2017-02-15 (annotated)
- Committer:
- Jan Jongboom
- Date:
- Wed Feb 15 21:57:31 2017 +0100
- Revision:
- 0:85fdc69bc10c
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jan Jongboom |
0:85fdc69bc10c | 1 | Apache License |
Jan Jongboom |
0:85fdc69bc10c | 2 | Version 2.0, January 2004 |
Jan Jongboom |
0:85fdc69bc10c | 3 | http://www.apache.org/licenses/ |
Jan Jongboom |
0:85fdc69bc10c | 4 | |
Jan Jongboom |
0:85fdc69bc10c | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
Jan Jongboom |
0:85fdc69bc10c | 6 | |
Jan Jongboom |
0:85fdc69bc10c | 7 | 1. Definitions. |
Jan Jongboom |
0:85fdc69bc10c | 8 | |
Jan Jongboom |
0:85fdc69bc10c | 9 | "License" shall mean the terms and conditions for use, reproduction, and |
Jan Jongboom |
0:85fdc69bc10c | 10 | distribution as defined by Sections 1 through 9 of this document. |
Jan Jongboom |
0:85fdc69bc10c | 11 | |
Jan Jongboom |
0:85fdc69bc10c | 12 | "Licensor" shall mean the copyright owner or entity authorized by the copyright |
Jan Jongboom |
0:85fdc69bc10c | 13 | owner that is granting the License. |
Jan Jongboom |
0:85fdc69bc10c | 14 | |
Jan Jongboom |
0:85fdc69bc10c | 15 | "Legal Entity" shall mean the union of the acting entity and all other entities |
Jan Jongboom |
0:85fdc69bc10c | 16 | that control, are controlled by, or are under common control with that entity. |
Jan Jongboom |
0:85fdc69bc10c | 17 | For the purposes of this definition, "control" means (i) the power, direct or |
Jan Jongboom |
0:85fdc69bc10c | 18 | indirect, to cause the direction or management of such entity, whether by |
Jan Jongboom |
0:85fdc69bc10c | 19 | contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the |
Jan Jongboom |
0:85fdc69bc10c | 20 | outstanding shares, or (iii) beneficial ownership of such entity. |
Jan Jongboom |
0:85fdc69bc10c | 21 | |
Jan Jongboom |
0:85fdc69bc10c | 22 | "You" (or "Your") shall mean an individual or Legal Entity exercising |
Jan Jongboom |
0:85fdc69bc10c | 23 | permissions granted by this License. |
Jan Jongboom |
0:85fdc69bc10c | 24 | |
Jan Jongboom |
0:85fdc69bc10c | 25 | "Source" form shall mean the preferred form for making modifications, including |
Jan Jongboom |
0:85fdc69bc10c | 26 | but not limited to software source code, documentation source, and configuration |
Jan Jongboom |
0:85fdc69bc10c | 27 | files. |
Jan Jongboom |
0:85fdc69bc10c | 28 | |
Jan Jongboom |
0:85fdc69bc10c | 29 | "Object" form shall mean any form resulting from mechanical transformation or |
Jan Jongboom |
0:85fdc69bc10c | 30 | translation of a Source form, including but not limited to compiled object code, |
Jan Jongboom |
0:85fdc69bc10c | 31 | generated documentation, and conversions to other media types. |
Jan Jongboom |
0:85fdc69bc10c | 32 | |
Jan Jongboom |
0:85fdc69bc10c | 33 | "Work" shall mean the work of authorship, whether in Source or Object form, made |
Jan Jongboom |
0:85fdc69bc10c | 34 | available under the License, as indicated by a copyright notice that is included |
Jan Jongboom |
0:85fdc69bc10c | 35 | in or attached to the work (an example is provided in the Appendix below). |
Jan Jongboom |
0:85fdc69bc10c | 36 | |
Jan Jongboom |
0:85fdc69bc10c | 37 | "Derivative Works" shall mean any work, whether in Source or Object form, that |
Jan Jongboom |
0:85fdc69bc10c | 38 | is based on (or derived from) the Work and for which the editorial revisions, |
Jan Jongboom |
0:85fdc69bc10c | 39 | annotations, elaborations, or other modifications represent, as a whole, an |
Jan Jongboom |
0:85fdc69bc10c | 40 | original work of authorship. For the purposes of this License, Derivative Works |
Jan Jongboom |
0:85fdc69bc10c | 41 | shall not include works that remain separable from, or merely link (or bind by |
Jan Jongboom |
0:85fdc69bc10c | 42 | name) to the interfaces of, the Work and Derivative Works thereof. |
Jan Jongboom |
0:85fdc69bc10c | 43 | |
Jan Jongboom |
0:85fdc69bc10c | 44 | "Contribution" shall mean any work of authorship, including the original version |
Jan Jongboom |
0:85fdc69bc10c | 45 | of the Work and any modifications or additions to that Work or Derivative Works |
Jan Jongboom |
0:85fdc69bc10c | 46 | thereof, that is intentionally submitted to Licensor for inclusion in the Work |
Jan Jongboom |
0:85fdc69bc10c | 47 | by the copyright owner or by an individual or Legal Entity authorized to submit |
Jan Jongboom |
0:85fdc69bc10c | 48 | on behalf of the copyright owner. For the purposes of this definition, |
Jan Jongboom |
0:85fdc69bc10c | 49 | "submitted" means any form of electronic, verbal, or written communication sent |
Jan Jongboom |
0:85fdc69bc10c | 50 | to the Licensor or its representatives, including but not limited to |
Jan Jongboom |
0:85fdc69bc10c | 51 | communication on electronic mailing lists, source code control systems, and |
Jan Jongboom |
0:85fdc69bc10c | 52 | issue tracking systems that are managed by, or on behalf of, the Licensor for |
Jan Jongboom |
0:85fdc69bc10c | 53 | the purpose of discussing and improving the Work, but excluding communication |
Jan Jongboom |
0:85fdc69bc10c | 54 | that is conspicuously marked or otherwise designated in writing by the copyright |
Jan Jongboom |
0:85fdc69bc10c | 55 | owner as "Not a Contribution." |
Jan Jongboom |
0:85fdc69bc10c | 56 | |
Jan Jongboom |
0:85fdc69bc10c | 57 | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf |
Jan Jongboom |
0:85fdc69bc10c | 58 | of whom a Contribution has been received by Licensor and subsequently |
Jan Jongboom |
0:85fdc69bc10c | 59 | incorporated within the Work. |
Jan Jongboom |
0:85fdc69bc10c | 60 | |
Jan Jongboom |
0:85fdc69bc10c | 61 | 2. Grant of Copyright License. |
Jan Jongboom |
0:85fdc69bc10c | 62 | |
Jan Jongboom |
0:85fdc69bc10c | 63 | Subject to the terms and conditions of this License, each Contributor hereby |
Jan Jongboom |
0:85fdc69bc10c | 64 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, |
Jan Jongboom |
0:85fdc69bc10c | 65 | irrevocable copyright license to reproduce, prepare Derivative Works of, |
Jan Jongboom |
0:85fdc69bc10c | 66 | publicly display, publicly perform, sublicense, and distribute the Work and such |
Jan Jongboom |
0:85fdc69bc10c | 67 | Derivative Works in Source or Object form. |
Jan Jongboom |
0:85fdc69bc10c | 68 | |
Jan Jongboom |
0:85fdc69bc10c | 69 | 3. Grant of Patent License. |
Jan Jongboom |
0:85fdc69bc10c | 70 | |
Jan Jongboom |
0:85fdc69bc10c | 71 | Subject to the terms and conditions of this License, each Contributor hereby |
Jan Jongboom |
0:85fdc69bc10c | 72 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, |
Jan Jongboom |
0:85fdc69bc10c | 73 | irrevocable (except as stated in this section) patent license to make, have |
Jan Jongboom |
0:85fdc69bc10c | 74 | made, use, offer to sell, sell, import, and otherwise transfer the Work, where |
Jan Jongboom |
0:85fdc69bc10c | 75 | such license applies only to those patent claims licensable by such Contributor |
Jan Jongboom |
0:85fdc69bc10c | 76 | that are necessarily infringed by their Contribution(s) alone or by combination |
Jan Jongboom |
0:85fdc69bc10c | 77 | of their Contribution(s) with the Work to which such Contribution(s) was |
Jan Jongboom |
0:85fdc69bc10c | 78 | submitted. If You institute patent litigation against any entity (including a |
Jan Jongboom |
0:85fdc69bc10c | 79 | cross-claim or counterclaim in a lawsuit) alleging that the Work or a |
Jan Jongboom |
0:85fdc69bc10c | 80 | Contribution incorporated within the Work constitutes direct or contributory |
Jan Jongboom |
0:85fdc69bc10c | 81 | patent infringement, then any patent licenses granted to You under this License |
Jan Jongboom |
0:85fdc69bc10c | 82 | for that Work shall terminate as of the date such litigation is filed. |
Jan Jongboom |
0:85fdc69bc10c | 83 | |
Jan Jongboom |
0:85fdc69bc10c | 84 | 4. Redistribution. |
Jan Jongboom |
0:85fdc69bc10c | 85 | |
Jan Jongboom |
0:85fdc69bc10c | 86 | You may reproduce and distribute copies of the Work or Derivative Works thereof |
Jan Jongboom |
0:85fdc69bc10c | 87 | in any medium, with or without modifications, and in Source or Object form, |
Jan Jongboom |
0:85fdc69bc10c | 88 | provided that You meet the following conditions: |
Jan Jongboom |
0:85fdc69bc10c | 89 | |
Jan Jongboom |
0:85fdc69bc10c | 90 | You must give any other recipients of the Work or Derivative Works a copy of |
Jan Jongboom |
0:85fdc69bc10c | 91 | this License; and |
Jan Jongboom |
0:85fdc69bc10c | 92 | You must cause any modified files to carry prominent notices stating that You |
Jan Jongboom |
0:85fdc69bc10c | 93 | changed the files; and |
Jan Jongboom |
0:85fdc69bc10c | 94 | You must retain, in the Source form of any Derivative Works that You distribute, |
Jan Jongboom |
0:85fdc69bc10c | 95 | all copyright, patent, trademark, and attribution notices from the Source form |
Jan Jongboom |
0:85fdc69bc10c | 96 | of the Work, excluding those notices that do not pertain to any part of the |
Jan Jongboom |
0:85fdc69bc10c | 97 | Derivative Works; and |
Jan Jongboom |
0:85fdc69bc10c | 98 | If the Work includes a "NOTICE" text file as part of its distribution, then any |
Jan Jongboom |
0:85fdc69bc10c | 99 | Derivative Works that You distribute must include a readable copy of the |
Jan Jongboom |
0:85fdc69bc10c | 100 | attribution notices contained within such NOTICE file, excluding those notices |
Jan Jongboom |
0:85fdc69bc10c | 101 | that do not pertain to any part of the Derivative Works, in at least one of the |
Jan Jongboom |
0:85fdc69bc10c | 102 | following places: within a NOTICE text file distributed as part of the |
Jan Jongboom |
0:85fdc69bc10c | 103 | Derivative Works; within the Source form or documentation, if provided along |
Jan Jongboom |
0:85fdc69bc10c | 104 | with the Derivative Works; or, within a display generated by the Derivative |
Jan Jongboom |
0:85fdc69bc10c | 105 | Works, if and wherever such third-party notices normally appear. The contents of |
Jan Jongboom |
0:85fdc69bc10c | 106 | the NOTICE file are for informational purposes only and do not modify the |
Jan Jongboom |
0:85fdc69bc10c | 107 | License. You may add Your own attribution notices within Derivative Works that |
Jan Jongboom |
0:85fdc69bc10c | 108 | You distribute, alongside or as an addendum to the NOTICE text from the Work, |
Jan Jongboom |
0:85fdc69bc10c | 109 | provided that such additional attribution notices cannot be construed as |
Jan Jongboom |
0:85fdc69bc10c | 110 | modifying the License. |
Jan Jongboom |
0:85fdc69bc10c | 111 | You may add Your own copyright statement to Your modifications and may provide |
Jan Jongboom |
0:85fdc69bc10c | 112 | additional or different license terms and conditions for use, reproduction, or |
Jan Jongboom |
0:85fdc69bc10c | 113 | distribution of Your modifications, or for any such Derivative Works as a whole, |
Jan Jongboom |
0:85fdc69bc10c | 114 | provided Your use, reproduction, and distribution of the Work otherwise complies |
Jan Jongboom |
0:85fdc69bc10c | 115 | with the conditions stated in this License. |
Jan Jongboom |
0:85fdc69bc10c | 116 | |
Jan Jongboom |
0:85fdc69bc10c | 117 | 5. Submission of Contributions. |
Jan Jongboom |
0:85fdc69bc10c | 118 | |
Jan Jongboom |
0:85fdc69bc10c | 119 | Unless You explicitly state otherwise, any Contribution intentionally submitted |
Jan Jongboom |
0:85fdc69bc10c | 120 | for inclusion in the Work by You to the Licensor shall be under the terms and |
Jan Jongboom |
0:85fdc69bc10c | 121 | conditions of this License, without any additional terms or conditions. |
Jan Jongboom |
0:85fdc69bc10c | 122 | Notwithstanding the above, nothing herein shall supersede or modify the terms of |
Jan Jongboom |
0:85fdc69bc10c | 123 | any separate license agreement you may have executed with Licensor regarding |
Jan Jongboom |
0:85fdc69bc10c | 124 | such Contributions. |
Jan Jongboom |
0:85fdc69bc10c | 125 | |
Jan Jongboom |
0:85fdc69bc10c | 126 | 6. Trademarks. |
Jan Jongboom |
0:85fdc69bc10c | 127 | |
Jan Jongboom |
0:85fdc69bc10c | 128 | This License does not grant permission to use the trade names, trademarks, |
Jan Jongboom |
0:85fdc69bc10c | 129 | service marks, or product names of the Licensor, except as required for |
Jan Jongboom |
0:85fdc69bc10c | 130 | reasonable and customary use in describing the origin of the Work and |
Jan Jongboom |
0:85fdc69bc10c | 131 | reproducing the content of the NOTICE file. |
Jan Jongboom |
0:85fdc69bc10c | 132 | |
Jan Jongboom |
0:85fdc69bc10c | 133 | 7. Disclaimer of Warranty. |
Jan Jongboom |
0:85fdc69bc10c | 134 | |
Jan Jongboom |
0:85fdc69bc10c | 135 | Unless required by applicable law or agreed to in writing, Licensor provides the |
Jan Jongboom |
0:85fdc69bc10c | 136 | Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, |
Jan Jongboom |
0:85fdc69bc10c | 137 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, |
Jan Jongboom |
0:85fdc69bc10c | 138 | including, without limitation, any warranties or conditions of TITLE, |
Jan Jongboom |
0:85fdc69bc10c | 139 | NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are |
Jan Jongboom |
0:85fdc69bc10c | 140 | solely responsible for determining the appropriateness of using or |
Jan Jongboom |
0:85fdc69bc10c | 141 | redistributing the Work and assume any risks associated with Your exercise of |
Jan Jongboom |
0:85fdc69bc10c | 142 | permissions under this License. |
Jan Jongboom |
0:85fdc69bc10c | 143 | |
Jan Jongboom |
0:85fdc69bc10c | 144 | 8. Limitation of Liability. |
Jan Jongboom |
0:85fdc69bc10c | 145 | |
Jan Jongboom |
0:85fdc69bc10c | 146 | In no event and under no legal theory, whether in tort (including negligence), |
Jan Jongboom |
0:85fdc69bc10c | 147 | contract, or otherwise, unless required by applicable law (such as deliberate |
Jan Jongboom |
0:85fdc69bc10c | 148 | and grossly negligent acts) or agreed to in writing, shall any Contributor be |
Jan Jongboom |
0:85fdc69bc10c | 149 | liable to You for damages, including any direct, indirect, special, incidental, |
Jan Jongboom |
0:85fdc69bc10c | 150 | or consequential damages of any character arising as a result of this License or |
Jan Jongboom |
0:85fdc69bc10c | 151 | out of the use or inability to use the Work (including but not limited to |
Jan Jongboom |
0:85fdc69bc10c | 152 | damages for loss of goodwill, work stoppage, computer failure or malfunction, or |
Jan Jongboom |
0:85fdc69bc10c | 153 | any and all other commercial damages or losses), even if such Contributor has |
Jan Jongboom |
0:85fdc69bc10c | 154 | been advised of the possibility of such damages. |
Jan Jongboom |
0:85fdc69bc10c | 155 | |
Jan Jongboom |
0:85fdc69bc10c | 156 | 9. Accepting Warranty or Additional Liability. |
Jan Jongboom |
0:85fdc69bc10c | 157 | |
Jan Jongboom |
0:85fdc69bc10c | 158 | While redistributing the Work or Derivative Works thereof, You may choose to |
Jan Jongboom |
0:85fdc69bc10c | 159 | offer, and charge a fee for, acceptance of support, warranty, indemnity, or |
Jan Jongboom |
0:85fdc69bc10c | 160 | other liability obligations and/or rights consistent with this License. However, |
Jan Jongboom |
0:85fdc69bc10c | 161 | in accepting such obligations, You may act only on Your own behalf and on Your |
Jan Jongboom |
0:85fdc69bc10c | 162 | sole responsibility, not on behalf of any other Contributor, and only if You |
Jan Jongboom |
0:85fdc69bc10c | 163 | agree to indemnify, defend, and hold each Contributor harmless for any liability |
Jan Jongboom |
0:85fdc69bc10c | 164 | incurred by, or claims asserted against, such Contributor by reason of your |
Jan Jongboom |
0:85fdc69bc10c | 165 | accepting any such warranty or additional liability. |
Jan Jongboom |
0:85fdc69bc10c | 166 | |
Jan Jongboom |
0:85fdc69bc10c | 167 | --- |
Jan Jongboom |
0:85fdc69bc10c | 168 | |
Jan Jongboom |
0:85fdc69bc10c | 169 | http_parser.c is based on src/http/ngx_http_parse.c from NGINX copyright |
Jan Jongboom |
0:85fdc69bc10c | 170 | Igor Sysoev. |
Jan Jongboom |
0:85fdc69bc10c | 171 | |
Jan Jongboom |
0:85fdc69bc10c | 172 | Additional changes are licensed under the same terms as NGINX and |
Jan Jongboom |
0:85fdc69bc10c | 173 | copyright Joyent, Inc. and other Node contributors. All rights reserved. |
Jan Jongboom |
0:85fdc69bc10c | 174 | |
Jan Jongboom |
0:85fdc69bc10c | 175 | Permission is hereby granted, free of charge, to any person obtaining a copy |
Jan Jongboom |
0:85fdc69bc10c | 176 | of this software and associated documentation files (the "Software"), to |
Jan Jongboom |
0:85fdc69bc10c | 177 | deal in the Software without restriction, including without limitation the |
Jan Jongboom |
0:85fdc69bc10c | 178 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
Jan Jongboom |
0:85fdc69bc10c | 179 | sell copies of the Software, and to permit persons to whom the Software is |
Jan Jongboom |
0:85fdc69bc10c | 180 | furnished to do so, subject to the following conditions: |
Jan Jongboom |
0:85fdc69bc10c | 181 | |
Jan Jongboom |
0:85fdc69bc10c | 182 | The above copyright notice and this permission notice shall be included in |
Jan Jongboom |
0:85fdc69bc10c | 183 | all copies or substantial portions of the Software. |
Jan Jongboom |
0:85fdc69bc10c | 184 | |
Jan Jongboom |
0:85fdc69bc10c | 185 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
Jan Jongboom |
0:85fdc69bc10c | 186 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
Jan Jongboom |
0:85fdc69bc10c | 187 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
Jan Jongboom |
0:85fdc69bc10c | 188 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
Jan Jongboom |
0:85fdc69bc10c | 189 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
Jan Jongboom |
0:85fdc69bc10c | 190 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
Jan Jongboom |
0:85fdc69bc10c | 191 | IN THE SOFTWARE. |