mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
http2_request_example: Change the target http2 server to http2.github.io
and
perform only a `GET` request.
This commit is contained in:
parent
313e36b49e
commit
2b026ea1fa
@ -1,8 +1,7 @@
|
|||||||
# HTTP/2 Request Example
|
# HTTP/2 Request Example
|
||||||
|
|
||||||
Established HTTP/2 connection with https://http2.golang.org
|
Establish an HTTP/2 connection with https://http2.github.io
|
||||||
- Performs a GET on /clockstream
|
- Performs a GET on /index.html
|
||||||
- Performs a PUT on /ECHO
|
|
||||||
|
|
||||||
## How to use example
|
## How to use example
|
||||||
Before project configuration and build, be sure to set the correct chip target using `idf.py set-target <chip_name>`.
|
Before project configuration and build, be sure to set the correct chip target using `idf.py set-target <chip_name>`.
|
||||||
@ -36,37 +35,21 @@ See the Getting Started Guide for full steps to configure and use ESP-IDF to bui
|
|||||||
## Example Output
|
## Example Output
|
||||||
|
|
||||||
```
|
```
|
||||||
I (9637) example_connect: - IPv4 address: 192.168.194.219
|
I (5609) example_connect: - IPv4 address: 192.168.0.103
|
||||||
I (9637) example_connect: - IPv6 address: fe80:0000:0000:0000:266f:28ff:fe80:2c74, type: ESP_IP6_ADDR_IS_LINK_LOCAL
|
I (5609) example_connect: - IPv6 address: fe80:0000:0000:0000:ae67:b2ff:fe45:0194, type: ESP_IP6_ADDR_IS_LINK_LOCAL
|
||||||
Connecting to server
|
Connecting to server
|
||||||
Connection done
|
Connection done
|
||||||
[data-prvd] Sending 11 bytes
|
[get-response] <!DOCTYPE HTML>
|
||||||
[echo-response] HELLO WORLD
|
<html lang="en">
|
||||||
[echo-response] Frame fully received
|
.
|
||||||
[echo-response] Frame fully received
|
.
|
||||||
[echo-response] Stream Closed
|
.
|
||||||
[get-response] # ~1KB of junk to force browsers to start rendering immediately:
|
Body of index.html
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
.
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
.
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
.
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
.
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
</html>
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
||||||
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
||||||
2021-09-07 08:22:10.73175944 +0000 UTC m=+530259.401042400
|
|
||||||
|
|
||||||
[get-response] Frame fully received
|
[get-response] Frame fully received
|
||||||
[get-response] 2021-09-07 08:22:11.73205314 +0000 UTC m=+530260.401336111
|
[get-response] Stream Closed
|
||||||
|
|
||||||
[get-response] Frame fully received
|
|
||||||
[get-response] 2021-09-07 08:22:12.7320106 +0000 UTC m=+530261.401293569
|
|
||||||
|
|
||||||
[get-response] Frame fully received
|
|
||||||
[get-response] 2021-09-07 08:22:13.732013218 +0000 UTC m=+530262.401296183
|
|
||||||
```
|
```
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
#
|
#
|
||||||
# SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
|
# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import http.client
|
import http.client
|
||||||
@ -11,7 +11,7 @@ import ttfw_idf
|
|||||||
from tiny_test_fw import Utility
|
from tiny_test_fw import Utility
|
||||||
|
|
||||||
HTTP_OK = 200
|
HTTP_OK = 200
|
||||||
TEST_SERVER = 'http2.golang.org'
|
TEST_SERVER = 'http2.github.io'
|
||||||
|
|
||||||
|
|
||||||
def is_test_server_available(): # type: () -> bool
|
def is_test_server_available(): # type: () -> bool
|
||||||
@ -33,7 +33,7 @@ def test_examples_protocol_http2_request(env, extra_data): # type: (tiny_test_f
|
|||||||
"""
|
"""
|
||||||
steps: |
|
steps: |
|
||||||
1. join AP
|
1. join AP
|
||||||
2. connect to http2.golang.org
|
2. connect to http2.github.io
|
||||||
3. send http2 request
|
3. send http2 request
|
||||||
4. send http2 put response
|
4. send http2 put response
|
||||||
"""
|
"""
|
||||||
@ -45,15 +45,12 @@ def test_examples_protocol_http2_request(env, extra_data): # type: (tiny_test_f
|
|||||||
# start the test
|
# start the test
|
||||||
# check if test server is avilable
|
# check if test server is avilable
|
||||||
test_server_available = is_test_server_available()
|
test_server_available = is_test_server_available()
|
||||||
# Skip the test if the server test server (http2.golang.org) is not available at the moment.
|
# Skip the test if the server test server (http2.github.io) is not available at the moment.
|
||||||
if test_server_available:
|
if test_server_available:
|
||||||
|
Utility.console_log('test server \"{}\" is available'.format(TEST_SERVER))
|
||||||
dut1.start_app()
|
dut1.start_app()
|
||||||
# check for connection
|
# check for connection
|
||||||
dut1.expect('Connection done', timeout=30)
|
dut1.expect('Connection done', timeout=30)
|
||||||
# check for echo response
|
|
||||||
dut1.expect('[echo-response] HELLO WORLD', timeout=30)
|
|
||||||
dut1.expect('[echo-response] Frame fully received')
|
|
||||||
dut1.expect('[echo-response] Stream Closed')
|
|
||||||
# check for get response
|
# check for get response
|
||||||
dut1.expect('[get-response] Frame fully received')
|
dut1.expect('[get-response] Frame fully received')
|
||||||
else:
|
else:
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
idf_component_register(SRCS "http2_request_example_main.c"
|
idf_component_register(SRCS "http2_request_example_main.c"
|
||||||
INCLUDE_DIRS "."
|
INCLUDE_DIRS "."
|
||||||
EMBED_TXTFILES "golang_root_cert.pem")
|
EMBED_TXTFILES "http2_github_io_root_cert.pem")
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
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
|
|
||||||
-----END CERTIFICATE-----
|
|
@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs
|
||||||
|
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||||
|
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
|
||||||
|
ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL
|
||||||
|
MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
|
||||||
|
LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy
|
||||||
|
YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2
|
||||||
|
4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC
|
||||||
|
Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1
|
||||||
|
itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn
|
||||||
|
4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X
|
||||||
|
sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft
|
||||||
|
bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA
|
||||||
|
MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
|
||||||
|
NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy
|
||||||
|
dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t
|
||||||
|
L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG
|
||||||
|
BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ
|
||||||
|
UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D
|
||||||
|
aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd
|
||||||
|
aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH
|
||||||
|
E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly
|
||||||
|
/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu
|
||||||
|
xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF
|
||||||
|
0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae
|
||||||
|
cPUeybQ=
|
||||||
|
-----END CERTIFICATE-----
|
@ -1,6 +1,6 @@
|
|||||||
/* HTTP2 GET Example using nghttp2
|
/* HTTP2 GET Example using nghttp2
|
||||||
|
|
||||||
Contacts http2.golang.org and executes the GET/PUT requests. A thin API
|
Contacts http2.github.io and executes the GET request. A thin API
|
||||||
wrapper on top of nghttp2, to properly demonstrate the interactions.
|
wrapper on top of nghttp2, to properly demonstrate the interactions.
|
||||||
|
|
||||||
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
||||||
@ -26,15 +26,13 @@
|
|||||||
#include "sh2lib.h"
|
#include "sh2lib.h"
|
||||||
|
|
||||||
|
|
||||||
extern const uint8_t server_root_cert_pem_start[] asm("_binary_golang_root_cert_pem_start");
|
extern const uint8_t server_root_cert_pem_start[] asm("_binary_http2_github_io_root_cert_pem_start");
|
||||||
extern const uint8_t server_root_cert_pem_end[] asm("_binary_golang_root_cert_pem_end");
|
extern const uint8_t server_root_cert_pem_end[] asm("_binary_http2_github_io_root_cert_pem_end");
|
||||||
|
|
||||||
/* The HTTP/2 server to connect to */
|
/* The HTTP/2 server to connect to */
|
||||||
#define HTTP2_SERVER_URI "https://http2.golang.org"
|
#define HTTP2_SERVER_URI "https://http2.github.io"
|
||||||
/* A GET request that keeps streaming current time every second */
|
/* A GET request that keeps streaming current time every second */
|
||||||
#define HTTP2_STREAMING_GET_PATH "/clockstream"
|
#define HTTP2_STREAMING_GET_PATH "/index.html"
|
||||||
/* A PUT request that echoes whatever we had sent to it */
|
|
||||||
#define HTTP2_PUT_PATH "/ECHO"
|
|
||||||
|
|
||||||
|
|
||||||
int handle_get_response(struct sh2lib_handle *handle, const char *data, size_t len, int flags)
|
int handle_get_response(struct sh2lib_handle *handle, const char *data, size_t len, int flags)
|
||||||
@ -120,10 +118,6 @@ static void http2_task(void *args)
|
|||||||
|
|
||||||
/* HTTP GET */
|
/* HTTP GET */
|
||||||
sh2lib_do_get(&hd, HTTP2_STREAMING_GET_PATH, handle_get_response);
|
sh2lib_do_get(&hd, HTTP2_STREAMING_GET_PATH, handle_get_response);
|
||||||
|
|
||||||
/* HTTP PUT */
|
|
||||||
sh2lib_do_put(&hd, HTTP2_PUT_PATH, send_put_data, handle_echo_response);
|
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
/* Process HTTP2 send/receive */
|
/* Process HTTP2 send/receive */
|
||||||
if (sh2lib_execute(&hd) < 0) {
|
if (sh2lib_execute(&hd) < 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user