|
|
Geplaatst op 27-11-2019 10:42:41
|
|
|

Het principe van breakpoint-voortzetting is heel eenvoudig, dat wil zeggen, de header van het HTTP-verzoek- en antwoordbericht verschilt van de normale download. Bij het aanvragen van een document op een server op de normale manier, zijn het verzoek en de ontvangen server als volgt:
Verzoekkop:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Reactiekop:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Wanneer de server breakpoint hervatting ondersteunt, zijn het verzoek en de reactie als volgt:
Verzoekkop:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Reactiekop:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf De verschillende delen van de twee berichten zijn gemarkeerd met rode secties. Het is te zien: De Range-header wordt gebruikt om de gewenste downloadlocatie van de klant te identificeren. Wanneer het antwoordnummer van de server 200 is, betekent dit dat de download begint vanaf de bestandsheader, en 206 betekent dat de overdracht begint vanaf een specifieke locatie van het bestand. Met andere woorden, bij het ondersteunen van breekpunthervatting kun je beginnen met downloaden vanaf elk deel van het bestand, terwijl de normale manier alleen vanaf de bestandsheader kan downloaden. Om de server breakpoint te kunnen hervatten, moeten de volgende problemen worden opgelost:
1。 Als het een hervattingsverzoek is, moet je het bestandsbereik verkrijgen dat de klant vereist. Zoals je kunt zien uit de bovenstaande analyse, wordt bij het verzenden van een breakpoint het Range-veld toegevoegd aan de pakketheader, en kun je bepalen of het een breakpoint-transmissieverzoek is als volgt. Stringbereik = verzoek. Headers["Range"]; bool isResume = snaar. IsNullOrEmpty(bereik);
2。 Reageer correct op de client om de clientserver te informeren dat het eindpunt wordt ondersteund voor voortzetting Bij het verzenden van een verzoek voor een breakpoint kan het bijbehorende nummer voor de client als volgt worden ingesteld: reactie. StatusCode = 206;
3。 Lever de juiste content die de klant nodig heeft Het leveren van de juiste content die de klant vereist, omvat doorgaans de volgende stappen Verkrijg het bestandsaanvraagbereik van de client door het bereik te analyseren. Wanneer een breekpunt wordt verzonden, is de vereiste lengte korter dan de lengte van het bestand, dus moet de juiste respons worden ingesteld. ContentLength64 eigendom. Draag de benodigde inhoud correct over Codevoorbeeld:
|
Vorig:httplistener luistert om de parameters van het POST-verzoek te krijgenVolgend:18 filosofische strips, allemaal meesters
|