Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 1|Svar: 0

[Kilde] .NET/C# bruger Socket til at sende HTTP(s)-forespørgsler baseret på Hypertext Transfer Protocol

[Kopier link]
Opslået påFor 44 sekunder siden | | | |
Krav: Hver dag, når du åbner websider eller apps, tilgås de oplysninger, du gennemser, næsten altid ved at sende HTTP- eller HTTPS-anmodningssvar. Brug af C# baseret på Hypertext Transfer Protocol og native sockets til at sende HTTP-anmodninger.

aftale

Hypertext Transfer Protocol (HTTP) er en tilstandsløs applikationslagsprotokol, der bruges til distribuerede, samarbejdende hypertekstinformationssystemer.

HTTP / 1.1 Protokol (RFC 9112):Hyperlink-login er synlig.
HTTP-semantik (RFC 9110):Hyperlink-login er synlig.

Eksempelanmodning:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: Hyperlink-login er synlig.
Accept-Language: en, mi

Eksempelsvar:
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 verden! Mit indhold inkluderer en efterfølgende CRLF.

Socket sender anmodninger

Kildekoden er som følger:
Kildekoden understøtter at sende forespørgsler til HTTP- og HTTPS-protokoller. Som vist nedenfor:



Forbindelse: tæt på vs hold i live

Hvis du bruger ReadToEndAsync til at læse alle data fra svaret, skal du sætte forbindelsen til at lukke. Hvis du sætter den til at holde den levende, vil ReadToEndAsync-svaret fryse. Årsager til ikke at fryse: Mange webservere (såsom Nginx, Apache eller visse API-gateways) vil aktivt initiere en FIN-pakke for at lukke TCP-forbindelsen, hvis klienten er native til at skrive en socket uden efterfølgende handling, eller hvis serveren udløser en inaktiv timeout (normalt sat til 5 sekunder).

HTTP-pipeline, der sender flere forespørgsler samtidig:Hyperlink-login er synlig.

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

FDD8 er et sådant hexadecimalt tal, der angiver størrelsen på følgende datablok (i bytes). Konvertering af fdd8 fra hexadecimal til decimal resulterer i 65.016 bytes. Det betyder, at umiddelbart efter fdd8 og CRLF er der 65.016 bytes data. Derefter kan der være flere datablokke, indtil en blok af størrelse 0 stødes på, hvilket indikerer, at transmissionen er fuldført.

FDD8 fortæller modtageren, at den næste datablok er 65.016 bytes lang.




Tidligere:HTTP(s) testsite-oversigt (løbende opdateret)
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com