FujiNet N: Arbeiten an erweiterten HTTP-Operationen.


FujiNet N: Arbeiten an erweiterten HTTP-Operationen.

von tschak909 » Mo 8. Feb 2021, 02:38
Derzeit wird an erweiterten HTTP-Operationen gearbeitet.

Derzeit werden die offenen Werte von AUX1 wie folgt abgebildet:

4 = GET
8 = PUT
12 = GET mit HEADERS (damit können Sie die angeforderten Header schreiben)
13 = POST

Andere Verben wie DELETE werden über idempotente XIO-Befehle abgewickelt.

Mit dem Befehl XIO 77 setzen Sie einen speziellen Kanalmodus für den einmal geöffneten HTTP-Adapter:

XIO 77,#1,aux1,aux2, "N:"

aux1 sollte mit dem beim Öffnen verwendeten aux1-Wert übereinstimmen
aux2 ist einer von:

0 = DATA, Lese-/Schreibvorgänge sind HTTP BODY
1 = COLLECT_HEADERS, PRINTs von "HEADER" zeigen die Header an, die Sie mit GET_HEADERS erhalten möchten
2 = GET_HEADERS, nachfolgende EINGABEN geben die Header-Werte in der Reihenfolge zurück, in der Sie sie COLLECTEN
3 = SET_HEADERS, nachfolgende PRINTs von "Header: Wert" werden diese Header in die Anfrage eingefügt
4 = SEND_POST_DATA, nachfolgende PRINTs, fügen die gesendeten POST-Daten hinzu.

Damit sollte es möglich sein, alle wichtigen Arten von Web-Anfragen zu realisieren.

Die Implementierung des HTTP-Adapters befindet sich derzeit hier:
https://github.com/FujiNetWIFI/fujinet- ... l/HTTP.cpp

und das Test-Harness, das ich derzeit zum Testen der GET- und POST-Anfragen verwende, ist hier, es ist in Go implementiert:
https://gist.github.com/tschak909/5af74 ... 7cb0b15680

und meine letzte Debug-Ausgabe nach dem Versuch, einen GET-Request mit einer Abfrage durchzuführen:

18:11:31.035 > sioNetwork::sio_process 0x4f 'O': 0x0c, 0x03
18:11:31.037 > sioNetzwerk::sio_open()
18:11:31.037 >
18:11:31.037 > ACK!
18:11:31.037 > <-SIO lesen 256 Bytes
18:11:31.085 > ACK!
18:11:31.086 > sioNetwork::parseURL(N:HTTP://TMA-2:8000/?V=1&W=1)
18:11:31.086 > sioNetwork::parseURL umgewandelt in (N:HTTP://TMA-2:8000/?V=1&W=1, HTTP://TMA-2:8000/?V=1&W=1)
18:11:31.088 > Protokoll parsen und instanziieren: N:HTTP://TMA-2:8000/?V=1&W=1
18:11:31.088 > NetzwerkProtokoll::ctor()
18:11:31.088 > sioNetwork::open_protocol() - Protokoll HTTP geöffnet.
18:11:31.088 > NetworkProtocolHTTP::mount(HTTP://TMA-2:8000/?V=1&W=1)
18:11:31.091 > fnHttpClient::begin "http://TMA-2:8000/?V=1&W=1"
18:11:31.091 > NetzwerkProtokollFS::resolve(/,/,)
18:11:31.091 > NetworkProtocolHTTP::stat(http://TMA-2:8000/?V=1&W=1)
18:11:31.091 > Aufgelöst nach http://TMA-2:8000/?V=1&W=1
18:11:31.093 > NetzwerkProtokollHTTP::open_file_handle()
18:11:31.093 > VOLLSTÄNDIG!
18:11:37.096 >
18:11:37.097 > CF: 71 53 00 00 c4
18:11:37.097 > sioNetwork::sio_process 0x53 'S': 0x00, 0x00
18:11:37.097 > ACK!
18:11:37.097 > sioNetzwerk::sio_status_channel(0)
18:11:37.097 > PROTOKOLL
18:11:37.097 > sio_status_channel() - BW: 65535 E: 1
18:11:37.099 > ->SIO schreiben 4 Bytes
18:11:37.099 > VOLLSTÄNDIG!
18:11:37.103 >
18:11:37.104 > CF: 71 52 7f 00 43
18:11:37.104 > sioNetwork::sio_process 0x52 'R': 0x7f, 0x00
18:11:37.104 > sioNetzwerk::sio_read( 127 bytes)
18:11:37.104 > ACK!
18:11:37.104 > NetzwerkProtokollFS::read_file(127)
18:11:37.105 > NetworkProtocolHTTP::read_file_handle(0x3fffadd0,127)
18:11:37.105 > fnHttpClient::GET
18:11:37.107 > 00012822 _perform
18:11:40.955 > 0001372b _perform status = 200, length = 23, chunked = 0
18:11:40.955 > C:\Users\thomc\.platformio\packages\framework-espidf\components\freertos\tasks.c:4811 (xTaskNotify)- assert failed!
18:11:40.956 >
18:11:40.956 > abort() wurde an PC 0x40099cd4 auf Kern 1 aufgerufen
18:11:40.957 >
18:11:40. 957 > Backtrace:0x40096f4e:0x3fff5bc0 0x40097635:0x3fff5be0 0x4009be35:0x3fff5c00 0x40099cd4:0x3fff5c80 0x40220e2e:0x3fff5ca0 0x40201b09:0x3fff5cc0 0x40201b51:0x3fff5ce0 0x4020843a: 0x3fff5d00 0x40247061:0x3fff5d40 0x400dd3bf:0x3fff5d60 0x400dd434:0x3fff5d80 0x400dd832:0x3fff5da0 0x400e00f9:0x3fff5dc0 0x400e0202:0x3fff5e00 0x400d2787:0x3fff5e20 0x4009763d:0x3fff5e40
18:11:40.961 >
18:11:40.961 >
18:11:40.961 > ELF-Datei SHA256: 8c1d89c82d4d2510
18:11:40.961 >
18:11:40.961 > Neustart...

Lustige Zeiten stehen bevor, seufz.
-Thom