Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 1|Svare: 0

[Kilde] .NET/C# bruker Socket for å sende HTTP(s)-forespørsler basert på Hypertext Transfer Protocol

[Kopier lenke]
Publisert påFor 44 sekunder siden | | | |
Krav: Hver dag, når du åpner nettsider eller apper, blir informasjonen du blar nesten alltid tilgjengelig ved å sende HTTP- eller HTTPS-forespørselsvar. Bruk av C# basert på Hypertext Transfer Protocol og native sockets for å sende HTTP-forespørsler.

avtale

Hypertext Transfer Protocol (HTTP) er en tilstandsløs applikasjonslagsprotokoll som brukes for distribuerte, samarbeidende hypertekstinformasjonssystemer.

HTTP / 1.1-protokoll (RFC 9112):Innloggingen med hyperkoblingen er synlig.
HTTP-semantikk (RFC 9110):Innloggingen med hyperkoblingen er synlig.

Eksempelforespørsel:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: Innloggingen med hyperkoblingen 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

Hei verden! Innholdet mitt inkluderer en etterfølgende CRLF.

Socket sender forespørsler

Kildekoden er som følger:
Kildekoden støtter sending av forespørsler til HTTP- og HTTPS-protokoller. Som vist nedenfor:



Forbindelse: nær vs hold i live

Hvis du bruker ReadToEndAsync for å lese all data fra svaret, må du sette tilkoblingen til å lukkes. Hvis du setter den til keep-alive, vil ReadToEndAsync-svaret fryse. Grunner til å ikke fryse: Mange webservere (som Nginx, Apache eller visse API-gatewayer) vil aktivt initiere en FIN-pakke for å lukke TCP-forbindelsen hvis klienten er native for å skrive en socket uten påfølgende handling, eller hvis serveren utløser en inaktiv timeout (vanligvis satt til 5 sekunder).

HTTP-pipeline, som sender flere forespørsler samtidig:Innloggingen med hyperkoblingen er synlig.

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

FDD8 er et slikt heksadesimaltall som angir størrelsen på følgende datablokk (i bytes). Konvertering av fdd8 fra heksadesimal til desimal gir 65 016 byte. Dette betyr at umiddelbart etter fdd8 og CRLF er det 65 016 byte data. Etter det kan det være flere datablokker inntil en blokk av størrelse 0 oppstår, noe som indikerer at overføringen er fullført.

FDD8 forteller mottakeren at neste datablokk er 65 016 byte lang.




Foregående:HTTP(s) teststedsoppsummering (kontinuerlig oppdatert)
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com