|
|
Paskelbta 2019-11-27 10:42:41
|
|
|

Lūžio taško tęsimo principas yra labai paprastas, tai yra, HTTP užklausos ir atsakymo pranešimo antraštė skiriasi nuo įprasto atsisiuntimo. Įprastu būdu prašant dokumento serveryje, pateiktas prašymas ir gautas įteikėjas yra tokie:
Užklausos antraštė:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Atsakymo antraštė:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Kai serveris palaiko stabdos taško atnaujinimą, užklausa ir atsakymas yra tokie:
Užklausos antraštė:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Atsakymo antraštė:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Skirtingos abiejų pranešimų dalys pažymėtos raudonomis skiltimis. Tai galima pamatyti: Diapazono antraštė naudojama kliento pageidaujamai atsisiuntimo vietai nustatyti. Kai serverio atsakymo numeris yra 200, tai reiškia, kad atsisiuntimas prasideda nuo failo antraštės, o 206 reiškia, kad perkėlimas prasideda nuo konkrečios failo vietos. Kitaip tariant, palaikydami stabdos taško atnaujinimą, galite pradėti atsisiųsti iš bet kurios failo dalies, o įprastu būdu galite atsisiųsti tik iš failo antraštės. Kad serverio palaikymas būtų atnaujintas, reikia išspręsti šias problemas:
1。 Jei tai atnaujinimo užklausa, turite gauti kliento reikalaujamą failų diapazoną. Kaip matote iš aukščiau pateiktos analizės, kai klientas perduoda lūžio tašką, laukas Diapazonas pridedamas prie paketo antraštės ir galite nustatyti, ar tai yra lūžio taško perdavimo užklausa, kaip nurodyta toliau. eilutės diapazonas = užklausa. Antraštės["Diapazonas"]; bool isResume = eilutė. IsNullOrEmpty(diapazonas);
2。 Teisingai atsakyti klientui, kad praneštų kliento serveriui, kad galinis punktas palaikomas tęsiniui Siunčiant užklausą dėl lūžio taško, atitinkamą kliento numerį galima nustatyti taip: atsakymas. StatusCode = 206;
3。 Pateikite klientui reikalingą turinį Norint pateikti teisingą kliento reikalaujamą turinį, paprastai reikia atlikti šiuos veiksmus Gaukite kliento failų užklausų diapazoną analizuodami diapazoną. Kai siunčiamas lūžio taškas, reikiamas ilgis yra trumpesnis nei failo ilgis, todėl reikia nustatyti teisingą atsakymą. Ypatybė ContentLength64. Teisingai perkelkite reikiamą turinį Kodo pavyzdys:
|
Ankstesnis:httplistener klausosi, kad gautų POST užklausos parametrusKitą:18 filosofinių komiksų, kurie visi yra meistrai
|