This is a quick example of a simple HTTP client program using the network-socket API that is provided as a part of mbed-os. The program brings up an underlying network interface, and uses it to perform an HTTP transaction over a TCPSocket.
README.md@73:03f443752d8a, 2019-04-15 (annotated)
- Committer:
- mbed_official
- Date:
- Mon Apr 15 14:00:14 2019 +0100
- Revision:
- 73:03f443752d8a
- Parent:
- 70:8a522080e86d
- Child:
- 75:1e3673a86f39
add contribution file
.
Commit copied from https://github.com/ARMmbed/mbed-os-example-sockets
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_official | 49:1923a727df5b | 1 | ## Getting started with the network-socket API |
mbed_official | 0:17bd84fc5087 | 2 | |
mbed_official | 70:8a522080e86d | 3 | (Note: To see this example in a rendered form you can import into the Arm Mbed Online Compiler, please see [the documentation](https://os.mbed.com/docs/mbed-os/latest/apis/socket.html#socket-example).) |
mbed_official | 70:8a522080e86d | 4 | |
mbed_official | 0:17bd84fc5087 | 5 | This is a quick example of a simple HTTP client program using the |
mbed_official | 33:d470701728e6 | 6 | [network-socket API](https://os.mbed.com/docs/latest/reference/network-socket.html) that [Mbed OS](https://github.com/ARMmbed/mbed-os) provides. |
mbed_official | 0:17bd84fc5087 | 7 | |
mbed_official | 0:17bd84fc5087 | 8 | The program brings up an underlying network interface, and uses it to perform an HTTP |
mbed_official | 0:17bd84fc5087 | 9 | transaction over a TCPSocket. |
mbed_official | 0:17bd84fc5087 | 10 | |
mbed_official | 49:1923a727df5b | 11 | ### Selecting the network interface |
mbed_official | 49:1923a727df5b | 12 | |
mbed_official | 61:e61d4d810148 | 13 | This application is able to use any network inteface it finds. Please see the Mbed OS documentationg for [selecting the default network interface](https://os.mbed.com/docs/v5.10/apis/network-interfaces.html). |
mbed_official | 49:1923a727df5b | 14 | |
mbed_official | 49:1923a727df5b | 15 | For example, building on Ethernet enabled boards, you do not do any configuration. |
mbed_official | 49:1923a727df5b | 16 | |
mbed_official | 53:0d44278430d3 | 17 | Building for WiFi boards, you need to provide SSID, password and security settings in `mbed_app.json` as instructed in the documentation. For example, like this: |
mbed_official | 53:0d44278430d3 | 18 | |
mbed_official | 53:0d44278430d3 | 19 | ``` |
mbed_official | 53:0d44278430d3 | 20 | { |
mbed_official | 53:0d44278430d3 | 21 | "target_overrides": { |
mbed_official | 53:0d44278430d3 | 22 | "*": { |
mbed_official | 53:0d44278430d3 | 23 | "platform.stdio-convert-newlines": true, |
mbed_official | 53:0d44278430d3 | 24 | "target.network-default-interface-type": "WIFI", |
mbed_official | 53:0d44278430d3 | 25 | "nsapi.default-wifi-security": "WPA_WPA2", |
mbed_official | 53:0d44278430d3 | 26 | "nsapi.default-wifi-ssid": "\"ssid\"", |
mbed_official | 53:0d44278430d3 | 27 | "nsapi.default-wifi-password": "\"password\"" |
mbed_official | 53:0d44278430d3 | 28 | } |
mbed_official | 53:0d44278430d3 | 29 | } |
mbed_official | 53:0d44278430d3 | 30 | } |
mbed_official | 53:0d44278430d3 | 31 | ``` |
mbed_official | 49:1923a727df5b | 32 | |
mbed_official | 49:1923a727df5b | 33 | Building for boards that have more that one network interface, you might need to override `target.network-default-interface-type` variable. |
mbed_official | 0:17bd84fc5087 | 34 | |
mbed_official | 40:afef93b6d854 | 35 | ### Building |
mbed_official | 40:afef93b6d854 | 36 | |
mbed_official | 40:afef93b6d854 | 37 | ``` |
mbed_official | 40:afef93b6d854 | 38 | mbed compile -t <toolchain> -m <target> |
mbed_official | 40:afef93b6d854 | 39 | ``` |
mbed_official | 40:afef93b6d854 | 40 | |
mbed_official | 40:afef93b6d854 | 41 | For example, building for K64F using GCC: `mbed compile -t GCC_ARM -m K64F` |
mbed_official | 24:0449435e2ef2 | 42 | |
mbed_official | 13:ed9e4aa00044 | 43 | ### Expected output ### |
mbed_official | 13:ed9e4aa00044 | 44 | |
mbed_official | 40:afef93b6d854 | 45 | **Note:** The default serial port baud rate is 9600 bit/s. |
mbed_official | 40:afef93b6d854 | 46 | |
mbed_official | 13:ed9e4aa00044 | 47 | ``` |
mbed_official | 13:ed9e4aa00044 | 48 | IP address: 10.118.14.45 |
mbed_official | 13:ed9e4aa00044 | 49 | Netmask: 255.255.252.0 |
mbed_official | 13:ed9e4aa00044 | 50 | Gateway: 10.118.12.1 |
mbed_official | 13:ed9e4aa00044 | 51 | sent 39 [GET / HTTP/1.1] |
mbed_official | 13:ed9e4aa00044 | 52 | recv 173 [HTTP/1.1 200 OK] |
mbed_official | 13:ed9e4aa00044 | 53 | External IP address: 217.140.111.135 |
mbed_official | 13:ed9e4aa00044 | 54 | Done |
mbed_official | 13:ed9e4aa00044 | 55 | ``` |
mbed_official | 13:ed9e4aa00044 | 56 | |
mbed_official | 0:17bd84fc5087 | 57 | ### Documentation ### |
mbed_official | 0:17bd84fc5087 | 58 | |
mbed_official | 12:2e7466eba9a3 | 59 | More information on the network-socket API can be found in the [mbed handbook](https://docs.mbed.com/docs/mbed-os-api-reference/en/latest/APIs/communication/network_sockets/). |
mbed_official | 33:d470701728e6 | 60 | |
mbed_official | 33:d470701728e6 | 61 | ## Troubleshooting |
mbed_official | 33:d470701728e6 | 62 | |
mbed_official | 33:d470701728e6 | 63 | If you have problems, you can review the [documentation](https://os.mbed.com/docs/latest/tutorials/debugging.html) for suggestions on what could be wrong and how to fix it. |
mbed_official | 73:03f443752d8a | 64 | |
mbed_official | 73:03f443752d8a | 65 | ## License and contributions |
mbed_official | 73:03f443752d8a | 66 | |
mbed_official | 73:03f443752d8a | 67 | The software is provided under Apache-2.0 license. Contributions to this project are accepted under the same license. Please see [contributing.md](CONTRIBUTING.md) for more info. |
mbed_official | 73:03f443752d8a | 68 | |
mbed_official | 73:03f443752d8a | 69 | This project contains code from other projects. The original license text is included in those source files. They must comply with our license guide. |
mbed_official | 73:03f443752d8a | 70 |