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