Követelmények: Minden nap, amikor weboldalakat vagy alkalmazásokat nyitunk, szinte mindig HTTP vagy HTTPS kérések küldésével érhető el az általad böngészett információkhoz. C# használata a Hypertext Transfer Protocol és natív socketek alapján HTTP kérések küldéséhez.
megállapodás
A Hypertext Transfer Protocol (HTTP) egy állapot nélküli alkalmazásréteg protokoll, amelyet elosztott, együttműködő hipertext információs rendszerekhez használnak.
HTTP / 1.1 protokoll (RFC 9112):A hiperlink bejelentkezés látható. HTTP szemantika (RFC 9110):A hiperlink bejelentkezés látható.
Példakérés:
Mintaválasz:
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
Sziasztok, világ! A tartalmaim között szerepel egy trailing CRLF.
Socket kéréseket küld
A forráskód a következő:
A forráskód támogatja a kérések küldését HTTP és HTTPS protokollokba. Ahogy az alábbiakban látható:
Kapcsolat: zárás vs életben tartás
Ha a válaszból származó összes adatot a ReadToEndAsync-rel olvasod, akkor a Connection-t zárónak kell állítanod. Ha fenntartás-éllegre állítod, a ReadToEndAsync válasz lefagy. Okok, amiért nem fagy le: Sok webszerver (például Nginx, Apache vagy bizonyos API-átjárók) aktívan indít egy FIN csomagot a TCP kapcsolat lezárásához, ha a kliens natív módon socketet ír további művelet nélkül, vagy ha a szerver üresjárati időtúllépést indít el (általában 5 másodpercre állítva).
HTTP pipeline, több kérést egyszerre küldve:A hiperlink bejelentkezés látható.
Transfer-Encoding: chunked 表示数据是以分块的形式传输的。每个数据块前面都有一个指示该块大小的十六进制数字,这个数字后面跟着一个换行符(CRLF),然后是实际的数据内容,再接着另一个换行符来结束这一块。这种编码方式允许服务器在不知道全部内容长度的情况下开始发送数据。
Az FDD8 olyan hatdozetes szám, amely megadja a következő adatblokk méretét (bájtokban). Az fdd8 átalakítása hexadecimalisból tizedesre, 65 016 bájtot eredményez. Ez azt jelenti, hogy közvetlenül az fdd8 és CRLF után 65 016 bájt adat áll. Ezután további adatblokkok lehetnek, amíg egy 0 méretű blokk nem találkozik, ami jelzi, hogy az átvitel befejezett.
Az FDD8 azt jelzi a vevőnek, hogy a következő adatblokk 65 016 bájt hosszú. |