Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 1|Odpověď: 0

[Zdroj] .NET/C# používá socket k odesílání HTTP(s) požadavků založených na protokolu Hypertext Transfer Protocol

[Kopírovat odkaz]
ZveřejněnoPřed 44 sekundami | | | |
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:
ZÍSKEJTE /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: Přihlášení k hypertextovému odkazu je viditelné.
Accept-Language: en, mi

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ů.




Předchozí:Souhrn testovacího místa HTTP(s) (průběžně aktualizován)
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com