Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 22743|Απάντηση: 0

[Πηγή] Εφαρμόστε μια απλή υπηρεσία Http με το HttpListener

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 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, ο ιστότοπος μετονομάστηκε επίσημα σε &quot;Code Farmer Network&quot;, με το παρόν!
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com