Požadavky: Každý den, při otevírání webových stránek nebo aplikací, jsou informace, které procházíte, téměř vždy přístupné odesláním HTTP nebo HTTPS odpovědí na požadavky. Použití C# založeného na Hypertext Transfer Protocol a nativních socketů pro odesílání HTTP požadavků.
dohoda
Protokol pro přenos hypertextu (HTTP) je protokol bezstavové aplikační vrstvy používaný pro distribuované, kolaborativní hypertextové informační systémy.
HTTP / 1.1 protokol (RFC 9112):Přihlášení k hypertextovému odkazu je viditelné. HTTP Semantika (RFC 9110):Přihlášení k hypertextovému odkazu je viditelné.
Příklad žádosti:
Ukázková odpověď:
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 světe! Můj obsah zahrnuje CRLF na pozadí.
Socket odesílá požadavky
Zdrojový kód je následující:
Zdrojový kód podporuje odesílání požadavků na HTTP a HTTPS protokoly. Jak je uvedeno níže:
Spojení: blízko vs udržení naživu
Pokud použijete ReadToEndAsync ke čtení všech dat z odpovědi, musíte nastavit připojení na uzavření. Pokud nastavíte režim keep-alive, odpověď ReadToEndAsync zamrzne. Důvody pro nezamrznutí: Mnoho webových serverů (jako Nginx, Apache nebo některé API brány) aktivně iniciuje FIN paket k uzavření TCP spojení, pokud je klient nativní pro zápis socketu bez následné akce, nebo pokud server spustí časový limit nečinnosti (obvykle nastavený na 5 sekund).
HTTP pipeline, která odesílá více požadavků současně:Přihlášení k hypertextovému odkazu je viditelné.
Transfer-Encoding: chunked 表示数据是以分块的形式传输的。每个数据块前面都有一个指示该块大小的十六进制数字,这个数字后面跟着一个换行符(CRLF),然后是实际的数据内容,再接着另一个换行符来结束这一块。这种编码方式允许服务器在不知道全部内容长度的情况下开始发送数据。
FDD8 je takové hexadecimální číslo, které určuje velikost následujícího datového bloku (v bajtech). Převod fdd8 z hexadecimálního na desetinný dává 65 016 bajtů. To znamená, že bezprostředně po fdd8 a CRLF je 65 016 bajtů dat. Poté může být více datových bloků, dokud nenarazíte na blok velikosti 0, což znamená dokončení přenosu.
FDD8 přijímači sděluje, že další datový blok má délku 65 016 bajtů. |