|
|
Δημοσιεύτηκε στις 27/11/2019 10:42:41 π.μ.
|
|
|

Η αρχή της συνέχισης του σημείου διακοπής είναι πολύ απλή, δηλαδή, η κεφαλίδα του αιτήματος HTTP και του μηνύματος απάντησης είναι διαφορετική από την κανονική λήψη. Όταν ζητάτε ένα έγγραφο σε έναν διακομιστή με τον κανονικό τρόπο, το αίτημα που υποβλήθηκε και ο διακομιστής που ελήφθη είναι τα εξής:
Κεφαλίδα αιτήματος:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost Κεφαλίδα απάντησης:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Όταν ο διακομιστής υποστηρίζει την επανέναρξη του σημείου διακοπής, το αίτημα και η απόκριση είναι τα εξής:
Κεφαλίδα αιτήματος:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360- Κεφαλίδα απάντησης:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf Τα διάφορα μέρη των δύο μηνυμάτων επισημαίνονται με κόκκινα τμήματα. Φαίνεται: Η κεφαλίδα εύρους χρησιμοποιείται για τον προσδιορισμό της επιθυμητής τοποθεσίας λήψης του πελάτη. Όταν ο αριθμός απάντησης του διακομιστή είναι 200, σημαίνει ότι η λήψη ξεκινά από την κεφαλίδα του αρχείου και το 206 σημαίνει ότι η μεταφορά ξεκινά από μια συγκεκριμένη θέση του αρχείου. Με άλλα λόγια, όταν υποστηρίζετε τη συνέχιση του σημείου διακοπής, μπορείτε να ξεκινήσετε τη λήψη από οποιοδήποτε μέρος του αρχείου, ενώ ο κανονικός τρόπος μπορεί να κάνει λήψη μόνο από την κεφαλίδα του αρχείου. Για να γίνει η συνέχιση του σημείου διακοπής υποστήριξης του διακομιστή, πρέπει να επιλυθούν τα ακόλουθα προβλήματα:
1。 Εάν πρόκειται για αίτημα επανάληψης, πρέπει να αποκτήσετε το εύρος αρχείων που απαιτείται από τον πελάτη. Όπως μπορείτε να δείτε από την παραπάνω ανάλυση, όταν ο πελάτης μεταδίδει ένα σημείο διακοπής, το πεδίο Εύρος προστίθεται στην κεφαλίδα του πακέτου και μπορείτε να προσδιορίσετε εάν πρόκειται για αίτημα μετάδοσης σημείου διακοπής ως εξής. εύρος συμβολοσειρών = αίτημα. Κεφαλίδες["Εύρος"]; bool isResume = συμβολοσειρά. IsNullOrEmpty(εύρος);
2。 Απαντήστε σωστά στον υπολογιστή-πελάτη για να ειδοποιήσετε τον διακομιστή πελάτη ότι το τελικό σημείο υποστηρίζεται για συνέχιση Κατά την αποστολή ενός αιτήματος για ένα σημείο διακοπής, ο αντίστοιχος αριθμός για τον πελάτη μπορεί να οριστεί ως εξής: απάντηση. Κωδικός κατάστασης = 206;
3。 Παρέχετε το σωστό περιεχόμενο που χρειάζεται ο πελάτης Η παροχή του σωστού περιεχομένου που απαιτείται από τον πελάτη περιλαμβάνει γενικά τα ακόλουθα βήματα Αποκτήστε το εύρος αίτησης αρχείου του πελάτη αναλύοντας το εύρος. Όταν αποστέλλεται ένα σημείο διακοπής, το απαιτούμενο μήκος είναι μικρότερο από το μήκος του αρχείου, επομένως πρέπει να οριστεί η σωστή απόκριση. ContentLength64. Μεταφέρετε σωστά το απαιτούμενο περιεχόμενο Παράδειγμα κώδικα:
|
Προηγούμενος:httplistener ακούει για να πάρει τις παραμέτρους αιτήματος POSTΕπόμενος:18 φιλοσοφικά κόμικς, τα οποία είναι όλα αριστοτέχνες
|