Freigeben über


IHttpFilter Schnittstelle

Definition

Eine Schnittstelle, die verwendet wird, um benutzerdefinierte Filter für einen HttpClient-instance zu implementieren.

public interface class IHttpFilter : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(2764795349, 2306, 17310, 191, 215, 225, 37, 82, 177, 101, 206)]
struct IHttpFilter : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(2764795349, 2306, 17310, 191, 215, 225, 37, 82, 177, 101, 206)]
public interface IHttpFilter : System.IDisposable
Public Interface IHttpFilter
Implements IDisposable
Abgeleitet
Attribute
Implementiert

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Hinweise

Die IHttpFilter-Schnittstelle wird verwendet, um benutzerdefinierte Filter für einen HttpClient-instance zu entwickeln. Benutzerdefinierte Filter werden in der SendRequestAsync-Methode auf der IHttpFilter-Schnittstelle implementiert.

Klassen im Windows.Web.Http-Namespace unterstützen die Verwendung von Filtern basierend auf den Klassen im Windows.Web.Http.Filters-Namespace . Die HttpClient-Klasse im Windows.Web.Http-Namespace stellt eine Basisklasse zum Senden von HTTP-Anforderungen und zum Empfangen von HTTP-Antworten bereit. Filter stellen einen Handlermechanismus bereit, um bei allgemeinen HTTP-Dienstproblemen zu helfen. Einfache Filter können in einer Sequenz miteinander verkettet werden, um komplexere HTTP-Dienstprobleme zu behandeln.

Ein HTTP-Filter ist ein Blackbox, das eine HTTP-Anforderungsnachricht akzeptiert und eine HTTP-Antwortnachricht erzeugt. Wie der Filter eine HTTP-Antwort erhält, wird vom Filterentwickler bestimmt. Eine App kann die Antwort sofort erstellen, sie kann die Anforderung über TCP an einen Server senden, sogar mehrere Anforderungen an einen Server (oder an mehrere Server) senden, bevor eine Antwortnachricht generiert wird. Da nicht angegeben ist, wie ein Filter zu einer Antwortnachricht gelangt, kann ein Filter die Anforderungsnachricht an einen anderen Filter (den sogenannten inneren Filter) übergeben und so die Erstellung einer Antwortnachricht an den inneren Filter delegieren.

Filter fügen häufig Header hinzu oder ändern sie, behandeln die Autorisierung (möglicherweise mithilfe des WebAuthenticationBroker) oder lassen eine Anforderung basierend auf Netzwerkbedingungen zu oder verbieten. Filter nehmen in der Regel Änderungen vor und übergeben dann die Anforderung an einen inneren Filter, der in der Regel festgelegt wird, wenn ein Filter erstellt wird.

Dieser Ansatz ermöglicht es Filtern, nur für einen bestimmten Aspekt einer HTTP-Anforderungsausführung verantwortlich zu sein und andere Aspekte an andere Filter zu delegieren. Ein Filter kann Zwischenspeicherung, Authentifizierung, Umleitungen, Cookies, die tatsächliche Kommunikation mit dem Server oder eine Kombination aus diesen implementieren. Der unterste Filter (Basisfilter) ist in der Regel derjenige, der die tatsächliche Kommunikation mit dem Netzwerk durchführt.

Entwickler können eigene Filter für websitespezifische Probleme schreiben. Ein Beispiel ist, dass einige Websites die Antwort 503 (Dienst nicht verfügbar) verwenden, um anzugeben, dass die Anforderung wiederholt werden soll. Ein benutzerdefinierter Filter kann implementiert werden, um dieses Verhalten zu erkennen und entsprechend zu reagieren. Ein weiteres Beispiel könnte sich mit Methoden in den Namespaces Windows.Web.Http und Windows.Web.Http.Filters befassen, die Daten über das Netzwerk senden und Ausnahmen aufgrund von Netzwerkfehlern auslösen (netzwerkkonnektivität geht z. B. im Flugzeugmodus verloren). Ein benutzerdefinierter Filter kann die Netzwerk-Ausnahme abfangen und in einen HTTP-status-Code konvertieren.

Methoden

Dispose()

Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen.

SendRequestAsync(HttpRequestMessage)

Senden Sie eine HTTP-Anforderung für die IHttpFilter-instance als asynchronen Vorgang.

Gilt für:

Weitere Informationen