Zahteve: Vsak dan, ko odpirate spletne strani ali aplikacije, se informacije, ki jih brskate, skoraj vedno dostopajo z odgovori na HTTP ali HTTPS zahteve. Uporaba C# na osnovi Hypertext Transfer Protocol in nativnih socketov za pošiljanje HTTP zahtevkov.
sporazum
Protokol za prenos hiperteksta (HTTP) je protokol brezstanjskega aplikacijskega sloja, ki se uporablja za distribuirane, sodelovalne hipertekstne informacijske sisteme.
HTTP / 1.1 protokol (RFC 9112):Prijava do hiperpovezave je vidna. HTTP semantika (RFC 9110):Prijava do hiperpovezave je vidna.
Primer zahteve:
Primer odgovora:
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
Pozdravljen svet! Moja vsebina vključuje sledilni CRLF.
Socket pošilja zahteve
Izvorna koda je naslednja:
Izvorna koda podpira pošiljanje zahtevkov prek HTTP in HTTPS protokolov. Kot je prikazano spodaj:
Povezava: blizu proti ohranjanju življenja
Če uporabite ReadToEndAsync za branje vseh podatkov iz odziva, morate nastaviti povezavo na zaprtje. Če nastavite na ohranjanje življenja, se bo odziv ReadToEndAsync zamrznil. Razlogi za nezamrzovanje: Številni spletni strežniki (kot so Nginx, Apache ali določeni API prehodi) aktivno sprožijo FIN paket za zaprtje TCP povezave, če je odjemalec nativen za zapisovanje socketa brez nadaljnjih akcij ali če strežnik sproži neaktivni timeout (običajno nastavljen na 5 sekund).
HTTP cevovod, ki hkrati pošilja več zahtev:Prijava do hiperpovezave je vidna.
Transfer-Encoding: chunked 表示数据是以分块的形式传输的。每个数据块前面都有一个指示该块大小的十六进制数字,这个数字后面跟着一个换行符(CRLF),然后是实际的数据内容,再接着另一个换行符来结束这一块。这种编码方式允许服务器在不知道全部内容长度的情况下开始发送数据。
FDD8 je takšno šestnajstiško število, ki določa velikost naslednjega podatkovnega bloka (v bajtih). Pretvorba fdd8 iz šestnajstiške v decimalno daje 65.016 bajtov. To pomeni, da je takoj po fdd8 in CRLF 65.016 bajtov podatkov. Po tem je lahko več podatkovnih blokov, dokler ne naletimo na blok velikosti 0, kar pomeni, da je prenos zaključen.
FDD8 sporoča sprejemniku, da je naslednji podatkovni blok dolg 65.016 bajtov. |