Vaatimukset: Joka päivä, kun avaat verkkosivuja tai sovelluksia, selaamasi tieto pääsee lähes aina käsiksi HTTP- tai HTTPS-pyyntövastauksilla. Käytetään C#:a, joka perustuu Hypertext Transfer Protocoliin, sekä natiivisoketteja HTTP-pyyntöjen lähettämiseen.
sopimus
Hypertext Transfer Protocol (HTTP) on tilaton sovelluskerroksen protokolla, jota käytetään hajautetuissa, yhteistyöhön perustuvissa hypertekstitietojärjestelmissä.
HTTP / 1.1 -protokolla (RFC 9112):Hyperlinkin kirjautuminen on näkyvissä. HTTP-semantiikka (RFC 9110):Hyperlinkin kirjautuminen on näkyvissä.
Esimerkkipyyntö:
Esimerkkivastaus:
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
Moi maailma! Sisältöni sisältää jälkikäteen tulevan CRLF:n.
Socket lähettää pyyntöjä
Lähdekoodi on seuraava:
Lähdekoodi tukee pyyntöjen lähettämistä HTTP- ja HTTPS-protokolliin. Kuten alla on esitetty:
Yhteys: läheltä vs. pysy hengissä
Jos käytät ReadToEndAsyncia lukeaksesi kaiken vastauksen datan, sinun täytyy asettaa yhteys sulkeutumaan. Jos asetat sen säilytettäväksi, ReadToEndAsync-vastaus jäätyy. Syyt jäätymättömyyteen: Monet web-palvelimet (kuten Nginx, Apache tai tietyt API-yhdyskäytävät) käynnistävät aktiivisesti FIN-paketin TCP-yhteyden sulkemiseksi, jos asiakas on natiivisti kirjoittamassa sokettia ilman seuraavia toimintoja, tai jos palvelin käynnistää lepotilan aikakatkaisun (yleensä 5 sekuntiin).
HTTP-putkisto, joka lähettää useita pyyntöjä samanaikaisesti:Hyperlinkin kirjautuminen on näkyvissä.
Transfer-Encoding: chunked 表示数据是以分块的形式传输的。每个数据块前面都有一个指示该块大小的十六进制数字,这个数字后面跟着一个换行符(CRLF),然后是实际的数据内容,再接着另一个换行符来结束这一块。这种编码方式允许服务器在不知道全部内容长度的情况下开始发送数据。
FDD8 on sellainen heksadesimaaliluku, joka määrittää seuraavan tietolohkon koon (tavuina). Kun fdd8 muunnetaan heksadesimaalista desimaaliksi, saadaan 65 016 tavua. Tämä tarkoittaa, että heti fdd8:n ja CRLF:n jälkeen on 65 016 tavua dataa. Tämän jälkeen datablokkeja voi olla enemmän, kunnes kohtaa 0-kokoisen lohkon, mikä osoittaa siirron valmistumisen.
FDD8 kertoo vastaanottimelle, että seuraava datalohko on 65 016 tavua pitkä. |