Požiadavky: Každý deň, pri otváraní webových stránok alebo aplikácií, informácie, ktoré prehliadate, sú takmer vždy prístupné odoslaním HTTP alebo HTTPS odpovedí na požiadavky. Použitie C# založeného na Hypertext Transfer Protocol a natívnych socketov na odosielanie HTTP požiadaviek.
dohoda
Hypertextový prenosový protokol (HTTP) je bezstavový aplikačný protokol používaný pre distribuované, kolaboratívne hypertextové informačné systémy.
HTTP / 1.1 protokol (RFC 9112):Prihlásenie na hypertextový odkaz je viditeľné. HTTP sémantika (RFC 9110):Prihlásenie na hypertextový odkaz je viditeľné.
Príklad požiadavky:
Ukážková odpoveď:
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
Ahoj svet! Môj obsah zahŕňa trailing CRLF.
Socket posiela požiadavky
Zdrojový kód je nasledovný:
Zdrojový kód podporuje odosielanie požiadaviek na HTTP a HTTPS protokoly. Ako je uvedené nižšie:
Spojenie: blízko vs udržiavanie nažive
Ak použijete ReadToEndAsync na čítanie všetkých dát z odpovede, musíte nastaviť pripojenie na zatvorenie. Ak ho nastavíte na keep-alive, odpoveď ReadToEndAsync zamrzne. Dôvody, prečo nezamrzne: Mnohé webové servery (ako Nginx, Apache alebo niektoré API brány) aktívne iniciujú FIN paket na uzavretie TCP spojenia, ak klient natívne napíše socket bez následnej akcie, alebo ak server spustí časový limit nečinnosti (zvyčajne nastavený na 5 sekúnd).
HTTP pipeline, odosielanie viacerých požiadaviek súčasne:Prihlásenie na hypertextový odkaz je viditeľné.
Transfer-Encoding: chunked 表示数据是以分块的形式传输的。每个数据块前面都有一个指示该块大小的十六进制数字,这个数字后面跟着一个换行符(CRLF),然后是实际的数据内容,再接着另一个换行符来结束这一块。这种编码方式允许服务器在不知道全部内容长度的情况下开始发送数据。
FDD8 je také hexadecimálne číslo, ktoré určuje veľkosť nasledujúceho dátového bloku (v bajtoch). Prevod fdd8 z hexadecimálneho na desatinný vedie k 65 016 bajtom. To znamená, že bezprostredne po fdd8 a CRLF je 65 016 bajtov dát. Potom môže byť viac dátových blokov, až kým sa neobjaví blok veľkosti 0, čo naznačuje, že prenos je dokončený.
FDD8 informuje prijímača, že ďalší dátový blok má dĺžku 65 016 bajtov. |