Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 1|Atsakyti: 0

[Šaltinis] .NET/C# naudoja Socket, kad siųstų HTTP(s) užklausas, pagrįstas Hypertext Transfer Protocol

[Kopijuoti nuorodą]
PaskelbtaPrieš 44 sekundes | | | |
Reikalavimai: Kiekvieną dieną, atidarant tinklalapius ar programas, informacija, kurią naršote, beveik visada pasiekiama siunčiant HTTP arba HTTPS užklausų atsakymus. Naudojant C#, pagrįstą Hypertext Transfer Protocol ir natyviomis socket'ais, HTTP užklausoms siųsti.

susitarimas

Hiperteksto perdavimo protokolas (HTTP) yra be būsenos programų sluoksnio protokolas, naudojamas paskirstytoms, bendradarbiaujančioms hiperteksto informacinėms sistemoms.

HTTP / 1.1 protokolas (RFC 9112):Hipersaito prisijungimas matomas.
HTTP Semantika (RFC 9110):Hipersaito prisijungimas matomas.

Pavyzdžio užklausa:
GAUKITE /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: Hipersaito prisijungimas matomas.
Accept-Language: en, mi

Pavyzdinis atsakymas:
HTTP/1.1 200 Gerai
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

Sveikas, pasauli! Mano turinys apima tęstinį CRLF.

Socket siunčia užklausas

Šaltinio kodas yra toks:
Šaltinio kodas palaiko užklausų siuntimą į HTTP ir HTTPS protokolus. Kaip parodyta žemiau:



Ryšys: arti ar išlaikyti gyvą

Jei naudojate ReadToEndAsync visiems atsakymo duomenims nuskaityti, turite nustatyti ryšį kaip uždarytą. Jei nustatote kaip keep-alive, ReadToEndAsync atsakymas užstrigs. Priežastys, kodėl neužstringa: Daugelis žiniatinklio serverių (pvz., Nginx, Apache ar tam tikri API vartai) aktyviai inicijuoja FIN paketą, kad uždarytų TCP ryšį, jei klientas yra natyvus ir rašo lizdą be jokių veiksmų arba jei serveris sukelia neveiklų laiko limitą (dažniausiai nustatytą 5 sekundėms).

HTTP vamzdynas, siunčiantis kelias užklausas vienu metu:Hipersaito prisijungimas matomas.

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

FDD8 yra toks šešioliktainis skaičius, kuris nurodo sekančio duomenų bloko (baitų) dydį. Konvertuojant fdd8 iš šešioliktainio į dešimtainį gaunama 65 016 baitų. Tai reiškia, kad iškart po fdd8 ir CRLF yra 65 016 baitų duomenų. Po to gali būti daugiau duomenų blokų, kol pasiekiamas 0 dydžio blokas, reiškiantis, kad perdavimas baigtas.

FDD8 praneša imtuvui, kad kitas duomenų blokas yra 65 016 baitų ilgio.




Ankstesnis:HTTP(s) testavimo vietos santrauka (nuolat atnaujinama)
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com