|
|
Δημοσιεύτηκε στις 2/12/2015 4:56:31 μ.μ.
|
|
|

Το HttpListener παρέχει ένα απλό, προγραμματιζόμενο και ελεγχόμενο πρόγραμμα ακρόασης πρωτοκόλλου HTTP. Σας επιτρέπει να παρέχετε εύκολα ορισμένες υπηρεσίες Http χωρίς να χρειάζεται να ξεκινήσετε ένα μεγάλο πρόγραμμα υπηρεσιών όπως το IIS.
Σημείωση: Αυτή η κλάση είναι διαθέσιμη μόνο σε υπολογιστές με λειτουργικά συστήματα Windows XP SP2 ή Windows Server 2003.
Τα γενικά βήματα για τη χρήση των υπηρεσιών Http είναι τα εξής:
Δημιουργήστε ένα αντικείμενο ακρόασης HTTP και αρχικοποιήστε το Προσθέστε το πρόθεμα URI που πρέπει να ακούσετε Αρχίστε να ακούτε τα αιτήματα των πελατών Χειρισμός αιτημάτων Http από πελάτες Απενεργοποίηση του προγράμματος ακρόασης HTTP Τα βήματα 3 και 4 μπορούν να ανακυκλωθούν για την παροχή υπηρεσιών που ζητούνται από πολλούς πελάτες.
Δημιουργία αντικειμένου ακρόασης HTTP
Για να δημιουργήσετε ένα αντικείμενο ακρόασης HTTP, χρειάζεται μόνο να δημιουργήσετε ένα νέο αντικείμενο HttpListener.
HttpListener listener = νέο HttpListener();
Η προετοιμασία απαιτεί τα ακόλουθα δύο βήματα
Μπορείτε να προσθέσετε το εύρος διευθύνσεων URL για ακρόαση στο πρόγραμμα ακρόασης. Προθέματα χρησιμοποιώντας την ακόλουθη λειτουργία: ακροατή. Prefixes.Add(πρόθεμα) //το πρόθεμα πρέπει να τελειώνει σε '/' Καλέστε τον ακροατή. Start() για να συνδέσετε τη θύρα και να αρχίσετε να ακούτε τις ανάγκες του πελάτη. Αποδοχή αιτήσεων HTTP
Στο .net 2.0, η πρόσβαση στα αντικείμενα αίτησης και απόκρισης που χρησιμοποιούνται από την κλάση HttpListener παρέχεται μέσω του αντικειμένου HttpListenerContext.
Ο ευκολότερος τρόπος για να αποκτήσετε το HttpListenerContext είναι ο εξής:
HttpListenerContext context = ακροατής. GetContext();
Αυτή η μέθοδος θα αποκλείσει τη λειτουργία κλήσης μέχρι να ληφθεί ένα αίτημα πελάτη και εάν θέλετε να βελτιώσετε την ταχύτητα απόκρισης, μπορείτε να χρησιμοποιήσετε το πρόγραμμα ακρόασης ασύγχρονης μεθόδου. BeginGetContext() για να αποκτήσετε το αντικείμενο HttpListenerContext.
Χειρισμός αιτημάτων HTTP
Αφού αποκτήσετε το HttpListenerContext, μπορείτε να αποκτήσετε το αντικείμενο που αντιπροσωπεύει το αίτημα του πελάτη μέσω του χαρακτηριστικού Request και το αντικείμενο που αντιπροσωπεύει την απόκριση που θα στείλει το HttpListener στον πελάτη μέσω του χαρακτηριστικού Response.
HttpListenerRequest request = context. Αίτημα; HttpListenerResponse response = πλαίσιο. Απάντηση;
Το αντικείμενο HttpListenerRequest εδώ είναι παρόμοιο με τη χρήση του Request and Response στο αντικείμενο Asp και HttpListenerResponse, οπότε δεν θα πω πολλά εδώ, μπορείτε να δείτε το παρακάτω παράδειγμα για συγκεκριμένη χρήση.
Απενεργοποίηση του προγράμματος ακρόασης HTTP
Καλώντας τον ακροατή. Stop() για να απενεργοποιήσετε τον ακροατή και να ελευθερώσετε τους σχετικούς πόρους
Παράδειγμα κώδικα:
χρησιμοποιώντας το Σύστημα. χρησιμοποιώντας το System.Collections.Generic. χρησιμοποιώντας το System.Text.
χρησιμοποιώντας System.Net?
χώρος ονομάτων ConsoleApplication1
{ Πρόγραμμα τάξης { στατικό κενό Main(string[] args) { HttpListener listener = νέο HttpListener(); ακροατή. Prefixes.Add("http://localhost/"); Προσθέστε το εύρος των διευθύνσεων URL που πρέπει να ακούσετε ακροατή. Έναρξη(); Ξεκινήστε την ακρόαση στη θύρα και λάβετε αιτήματα πελάτη Console.WriteLine("Ακούγοντας...");
Αποκλείει την κύρια λειτουργία μέχρι να ληφθεί ένα αίτημα πελάτη HttpListenerContext context = ακροατής. GetContext(); HttpListenerRequest request = context. Αίτημα; HttpListenerResponse response = πλαίσιο. Απάντηση;
απόκριση συμβολοσειράςΣυμβολοσειρά = συμβολοσειρά. Format("<HTML><BODY> {0}</BODY></HTML>", DateTime.Now); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); Εξάγετε τις αντίστοιχες πληροφορίες στον πελάτη. απάντηση. ContentLength64 = buffer. Μήκος; System.IO.Έξοδος ροής = απόκριση. Ροή εξόδου; παραγωγή. Write(buffer, 0, buffer. Μήκος); Κλείστε τη ροή εξόδου για να ελευθερώσετε τους αντίστοιχους πόρους παραγωγή. Κλείσιμο();
ακροατή. Διακοπή(); Απενεργοποιήστε το HttpListener } }
}
Το πρόγραμμα είναι σχετικά απλό, δημιουργήστε πρώτα έναν ακροατή HTTP για να υλοποιήσετε την υπηρεσία του τομέα "http://localhost/time/", όταν λαμβάνει ένα απομακρυσμένο αίτημα, μετατρέπει την τρέχουσα ώρα σε έξοδο συμβολοσειράς στον πελάτη και, στη συνέχεια, κλείνει τον ακροατή.
|
Προηγούμενος:Προβλήματα και λύσεις για κλήσεις μεταξύ τομέων AJAX σε υπηρεσίες ASP.NET MVC ή WebAPIΕπόμενος:Στις 3 Δεκεμβρίου 2015, ο ιστότοπος μετονομάστηκε επίσημα σε "Code Farmer Network", με το παρόν!
|