89 lines
2.4 KiB
ReStructuredText
89 lines
2.4 KiB
ReStructuredText
|
.. _sockets-http-client-sample:
|
||
|
|
||
|
Socket HTTP Client
|
||
|
##################
|
||
|
|
||
|
Overview
|
||
|
********
|
||
|
|
||
|
This sample application implements an HTTP(S) client that will do an HTTP
|
||
|
or HTTPS request and wait for the response from the HTTP server.
|
||
|
|
||
|
The source code for this sample application can be found at:
|
||
|
:zephyr_file:`samples/net/sockets/http_client`.
|
||
|
|
||
|
Requirements
|
||
|
************
|
||
|
|
||
|
- :ref:`networking_with_host`
|
||
|
|
||
|
Building and Running
|
||
|
********************
|
||
|
|
||
|
You can use this application on a supported board, including
|
||
|
running it inside QEMU as described in :ref:`networking_with_qemu`.
|
||
|
|
||
|
Build the http-client sample application like this:
|
||
|
|
||
|
.. zephyr-app-commands::
|
||
|
:zephyr-app: samples/net/sockets/http_client
|
||
|
:board: <board to use>
|
||
|
:conf: <config file to use>
|
||
|
:goals: build
|
||
|
:compact:
|
||
|
|
||
|
Enabling TLS support
|
||
|
====================
|
||
|
|
||
|
Enable TLS support in the sample by building the project with the
|
||
|
``overlay-tls.conf`` overlay file enabled using these commands:
|
||
|
|
||
|
.. zephyr-app-commands::
|
||
|
:zephyr-app: samples/net/sockets/http_client
|
||
|
:board: qemu_x86
|
||
|
:conf: "prj.conf overlay-tls.conf"
|
||
|
:goals: build
|
||
|
:compact:
|
||
|
|
||
|
An alternative way is to specify ``-DOVERLAY_CONFIG=overlay-tls.conf`` when
|
||
|
running ``west build`` or ``cmake``.
|
||
|
|
||
|
The certificate and private key used by the sample can be found in the sample's
|
||
|
:zephyr_file:`samples/net/sockets/http_client/src/` directory.
|
||
|
The default certificates used by Socket HTTP Client and
|
||
|
``https-server.py`` program found in the
|
||
|
`net-tools <https://github.com/zephyrproject-rtos/net-tools>`_ project, enable
|
||
|
establishing a secure connection between the samples.
|
||
|
|
||
|
|
||
|
Running http-server in Linux Host
|
||
|
=================================
|
||
|
|
||
|
You can run this ``http-client`` sample application in QEMU
|
||
|
and run the ``http-server.py`` (from net-tools) on a Linux host.
|
||
|
|
||
|
To use QEMU for testing, follow the :ref:`networking_with_qemu` guide.
|
||
|
|
||
|
In a terminal window:
|
||
|
|
||
|
.. code-block:: console
|
||
|
|
||
|
$ ./http-server.py
|
||
|
|
||
|
Run ``http-client`` application in QEMU:
|
||
|
|
||
|
.. zephyr-app-commands::
|
||
|
:zephyr-app: samples/net/sockets/http_client
|
||
|
:host-os: unix
|
||
|
:board: qemu_x86
|
||
|
:conf: prj.conf
|
||
|
:goals: run
|
||
|
:compact:
|
||
|
|
||
|
Note that ``http-server.py`` must be running in the Linux host terminal window
|
||
|
before you start the http-client application in QEMU.
|
||
|
Exit QEMU by pressing :kbd:`CTRL+A` :kbd:`x`.
|
||
|
|
||
|
You can verify TLS communication with a Linux host as well. Just use the
|
||
|
``https-server.py`` program in net-tools project.
|