Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 1|Svar: 0

[Källa] .NET/C# använder Socket för att skicka HTTP(s)-förfrågningar baserade på Hypertext Transfer Protocol

[Kopiera länk]
Publicerad på44 sekunder sedan | | | |
Krav: Varje dag, när du öppnar webbsidor eller appar, nås informationen du bläddrar i nästan alltid genom att skicka HTTP- eller HTTPS-förfrågningssvar. Använder C# baserat på Hypertext Transfer Protocol och inbyggda sockets för att skicka HTTP-förfrågningar.

överenskommelse

Hypertext Transfer Protocol (HTTP) är ett tillståndslöst applikationslagsprotokoll som används för distribuerade, samarbetsinriktade hypertextinformationssystem.

HTTP / 1.1-protokollet (RFC 9112):Inloggningen med hyperlänken är synlig.
HTTP-semantik (RFC 9110):Inloggningen med hyperlänken är synlig.

Exempelförfrågan:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: Inloggningen med hyperlänken är synlig.
Accept-Language: en, mi

Exempelsvar:
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

Hej världen! Mitt innehåll inkluderar en efterföljande CRLF.

Socket skickar förfrågningar

Källkoden är följande:
Källkoden stöder att skicka förfrågningar till HTTP- och HTTPS-protokoll. Som visas nedan:



Anslutning: nära vs håll vid liv

Om du använder ReadToEndAsync för att läsa all data från svaret måste du ställa in anslutningen på att stängas. Om du sätter den på keep-alive fryser ReadToEndAsync-svaret. Anledningar till att inte frysa: Många webbservrar (såsom Nginx, Apache eller vissa API-gateways) initierar aktivt ett FIN-paket för att stänga TCP-anslutningen om klienten är inbyggd för att skriva en socket utan efterföljande åtgärd, eller om servern utlöser en idle timeout (vanligtvis satt till 5 sekunder).

HTTP-pipeline, som skickar flera förfrågningar samtidigt:Inloggningen med hyperlänken är synlig.

Transfer-Encoding: chunked 表示数据是以分块的形式传输的。每个数据块前面都有一个指示该块大小的十六进制数字,这个数字后面跟着一个换行符(CRLF),然后是实际的数据内容,再接着另一个换行符来结束这一块。这种编码方式允许服务器在不知道全部内容长度的情况下开始发送数据。

FDD8 är ett sådant hexadecimalt tal som anger storleken på följande datablock (i byte). Att konvertera fdd8 från hexadecimalt till decimalt resulterar i 65 016 byte. Detta innebär att omedelbart efter fdd8 och CRLF finns 65 016 byte data. Efter det kan det finnas fler datablock tills ett block av storlek 0 påträffas, vilket indikerar att överföringen är slutförd.

FDD8 talar om för mottagaren att nästa datablock är 65 016 byte långt.




Föregående:HTTP(s) testplatsöversikt (kontinuerligt uppdaterad)
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com