HttpRequestHeaderCollection Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine Auflistung der HTTP-Header bereit, die einer HTTP-Anforderung zugeordnet sind.
public ref class HttpRequestHeaderCollection sealed : IIterable<IKeyValuePair<Platform::String ^, Platform::String ^> ^>, IMap<Platform::String ^, Platform::String ^>, IStringable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class HttpRequestHeaderCollection final : IIterable<IKeyValuePair<winrt::hstring, winrt::hstring const&>>, IMap<winrt::hstring, winrt::hstring const&>, IStringable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class HttpRequestHeaderCollection final : IIterable<IKeyValuePair<winrt::hstring, winrt::hstring const&>>, IMap<winrt::hstring, winrt::hstring const&>, IStringable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class HttpRequestHeaderCollection : IDictionary<string,string>, IEnumerable<KeyValuePair<string,string>>, IStringable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class HttpRequestHeaderCollection : IDictionary<string,string>, IEnumerable<KeyValuePair<string,string>>, IStringable
Public NotInheritable Class HttpRequestHeaderCollection
Implements IDictionary(Of String, String), IEnumerable(Of KeyValuePair(Of String, String)), IStringable
- Vererbung
- Attribute
- Implementiert
-
IDictionary<String,String> IMap<Platform::String,Platform::String> IMap<winrt::hstring,winrt::hstring> IIterable<IKeyValuePair<K,V>> IEnumerable<KeyValuePair<K,V>> IEnumerable<KeyValuePair<String,String>> IIterable<IKeyValuePair<Platform::String,Platform::String>> IIterable<IKeyValuePair<winrt::hstring,winrt::hstring>> IStringable
Windows-Anforderungen
Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
Beispiele
Der folgende Beispielcode zeigt eine Methode zum Abrufen und Festlegen von Anforderungsheadern für ein HttpRequestMessage-Objekt mithilfe der Eigenschaften des HttpRequestHeaderCollection-Objekts. Der Windows.Web.Http.Headers-Namespace verfügt außerdem über eine Reihe von stark typisierten Headersammlungen und Wertklassen für bestimmte HTTP-Header, die zum Abrufen und Festlegen von Headern mit Validierung verwendet werden können.
using System;
using System.Collections.Generic;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Web.Http;
using Windows.Web.Http.Headers;
public void DemonstrateHeaderRequest()
{
DemonstrateHeaderRequestAccept();
DemonstrateHeaderRequestAcceptEncoding();
DemonstrateHeaderRequestAcceptLanguage();
DemonstrateHeaderRequestAuthorization();
DemonstrateHeaderRequestCacheControl();
DemonstrateHeaderRequestConnection();
DemonstrateHeaderRequestCookie();
DemonstrateHeaderRequestDate();
DemonstrateHeaderRequestFrom();
DemonstrateHeaderRequestHost();
DemonstrateHeaderRequestIfModifiedSince();
DemonstrateHeaderRequestIfUnmodifiedSince();
DemonstrateHeaderRequestMaxForwards();
DemonstrateHeaderRequestProxyAuthorization();
DemonstrateHeaderRequestReferer();
DemonstrateHeaderRequestUserAgent();
}
public void DemonstrateHeaderRequestAccept()
{
var request = new HttpRequestMessage();
bool parsedOk = false;
// Set the header with a string.
parsedOk = request.Headers.Accept.TryParseAdd ("audio/*");
parsedOk = request.Headers.Accept.TryParseAdd ("audio/*; q=0.2");
parsedOk = request.Headers.Accept.TryParseAdd ("audio/*; q=0.4; mysetting=myvalue");
// Set the header with a strong type.
request.Headers.Accept.Add(new HttpMediaTypeWithQualityHeaderValue("audio/*", .6));
// Get the strong type out
foreach (var value in request.Headers.Accept)
{
System.Diagnostics.Debug.WriteLine("One of the Accept values: {0}={1}", value.MediaType, value.Quality);
}
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The Accept ToString() results: {0}", request.Headers.Accept.ToString());
}
public void DemonstrateHeaderRequestAcceptEncoding()
{
var request = new HttpRequestMessage();
bool parsedOk = false;
// Set the header with a string.
parsedOk = request.Headers.AcceptEncoding.TryParseAdd("compress");
parsedOk = request.Headers.AcceptEncoding.TryParseAdd("gzip;q=1.0");
// Set the header with a strong type.
request.Headers.AcceptEncoding.Add(new HttpContentCodingWithQualityHeaderValue("*", 0));
// Get the strong type out
foreach (var value in request.Headers.AcceptEncoding)
{
System.Diagnostics.Debug.WriteLine("One of the AcceptEncoding values: {0}={1}", value.ContentCoding, value.Quality);
}
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The AcceptEncoding ToString() results: {0}", request.Headers.AcceptEncoding.ToString());
}
public void DemonstrateHeaderRequestAcceptLanguage()
{
var request = new HttpRequestMessage();
bool parsedOk = false;
// Set the header with a string.
parsedOk = request.Headers.AcceptLanguage.TryParseAdd("da");
parsedOk = request.Headers.AcceptLanguage.TryParseAdd("en-gb;q=0.8");
// Set the header with a strong type.
request.Headers.AcceptLanguage.Add(new HttpLanguageRangeWithQualityHeaderValue("en", .7));
// Get the strong type out
foreach (var value in request.Headers.AcceptLanguage)
{
System.Diagnostics.Debug.WriteLine("One of the AcceptLanguage values: {0}={1}", value.LanguageRange, value.Quality);
}
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The AcceptLanguage ToString() results: {0}", request.Headers.AcceptLanguage.ToString());
}
public void DemonstrateHeaderRequestAuthorization()
{
var request = new HttpRequestMessage();
// Set the header with a strong type.
string username = "user";
string password = "password";
var buffer = Windows.Security.Cryptography.CryptographicBuffer.ConvertStringToBinary (username + ":" + password, Windows.Security.Cryptography.BinaryStringEncoding.Utf8);
string base64token = Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(buffer);
request.Headers.Authorization = new HttpCredentialsHeaderValue("Basic", base64token);
// Get the strong type out
System.Diagnostics.Debug.WriteLine("One of the Authorization values: {0}={1}",
request.Headers.Authorization.Scheme,
request.Headers.Authorization.Token);
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The Authorization ToString() results: {0}", request.Headers.Authorization.ToString());
}
public void DemonstrateHeaderRequestCacheControl()
{
var request = new HttpRequestMessage();
bool parsedOk = false;
// Set the header with a string.
parsedOk = request.Headers.CacheControl.TryParseAdd("no-store");
// Set the header with a strong type.
request.Headers.CacheControl.Add(new HttpNameValueHeaderValue("max-age", "10"));
// Get the strong type out
foreach (var value in request.Headers.CacheControl)
{
System.Diagnostics.Debug.WriteLine("One of the CacheControl values: {0}={1}", value.Name, value.Value);
}
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The CacheControl ToString() results: {0}", request.Headers.CacheControl.ToString());
}
public void DemonstrateHeaderRequestConnection()
{
var request = new HttpRequestMessage();
bool parsedOk = false;
// Set the header with a string.
parsedOk = request.Headers.Connection.TryParseAdd("close");
// Set the header with a strong type.
request.Headers.Connection.Add(new HttpConnectionOptionHeaderValue("cache-control"));
// Get the strong type out
foreach (var value in request.Headers.Connection)
{
System.Diagnostics.Debug.WriteLine("One of the Connection values: {0}", value.Token);
}
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The Connection ToString() results: {0}", request.Headers.Connection.ToString());
}
public void DemonstrateHeaderRequestCookie()
{
var request = new HttpRequestMessage();
bool parsedOk = false;
// Set the header with a string.
parsedOk = request.Headers.Cookie.TryParseAdd("cookieName=cookieValue");
// Set the header with a strong type.
request.Headers.Cookie.Add(new HttpCookiePairHeaderValue("cookie2", "value2"));
// Get the strong type out
foreach (var value in request.Headers.Cookie)
{
System.Diagnostics.Debug.WriteLine("One of the Cookie values: {0}={1}", value.Name, value.Value);
}
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The Cookie ToString() results: {0}", request.Headers.Cookie.ToString());
}
public void DemonstrateHeaderRequestDate()
{
var request = new HttpRequestMessage();
// This is not typically set with a string.
// Set the header with a strong type.
DateTimeOffset value = DateTimeOffset.UtcNow;
request.Headers.Date = value;
// Get the strong type out
System.Diagnostics.Debug.WriteLine("Date value in ticks: {0}", request.Headers.Date.Value.Ticks);
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The Date ToString() results: {0}", request.Headers.Date.ToString());
}
public void DemonstrateHeaderRequestFrom()
{
var request = new HttpRequestMessage();
// Set the header with a string.
request.Headers.From = "person@example.com";
// Get the strong type out
System.Diagnostics.Debug.WriteLine("From value: {0}", request.Headers.From);
}
public void DemonstrateHeaderRequestHost()
{
var request = new HttpRequestMessage();
// This is not typically set with a string.
// Set the header with a strong type.
// HostName is in the Windows.Networking namespace.
var value = new Windows.Networking.HostName("example.com");
request.Headers.Host = value;
// Get the strong type out
System.Diagnostics.Debug.WriteLine("Canonical Host name: {0}", request.Headers.Host.CanonicalName);
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The Host ToString() results: {0}", request.Headers.Host.ToString());
}
public void DemonstrateHeaderRequestIfModifiedSince()
{
var request = new HttpRequestMessage();
// This is not typically set with a string.
// Set the header with a strong type.
var value = DateTimeOffset.Now.AddDays(-1); // Since yesterday.
request.Headers.IfModifiedSince = value;
// Get the strong type out
System.Diagnostics.Debug.WriteLine("IfModifiedSince value in ticks: {0}", request.Headers.IfModifiedSince.Value.Ticks);
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The IfModifiedSince ToString() results: {0}", request.Headers.IfModifiedSince.ToString());
}
public void DemonstrateHeaderRequestIfUnmodifiedSince()
{
var request = new HttpRequestMessage();
// This is not typically set with a string.
// Set the header with a strong type.
var value = DateTimeOffset.Now.AddDays(-1); // Since yesterday.
request.Headers.IfUnmodifiedSince = value;
// Get the strong type out
System.Diagnostics.Debug.WriteLine("IfUnmodifiedSince value in ticks: {0}", request.Headers.IfUnmodifiedSince.Value.Ticks);
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The IfUnmodfiedSince ToString() results: {0}", request.Headers.IfUnmodifiedSince.ToString());
}
public void DemonstrateHeaderRequestMaxForwards()
{
var request = new HttpRequestMessage();
// Set the header with an integer.
request.Headers.MaxForwards= 2;
// Get the strong type out
System.Diagnostics.Debug.WriteLine("MaxForwards value: {0}", request.Headers.MaxForwards);
}
public void DemonstrateHeaderRequestProxyAuthorization()
{
var request = new HttpRequestMessage();
// Set the header with a strong type.
string username = "user";
string password = "password";
var buffer = Windows.Security.Cryptography.CryptographicBuffer.ConvertStringToBinary(username + ":" + password, Windows.Security.Cryptography.BinaryStringEncoding.Utf16LE);
string base64token = Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(buffer);
request.Headers.ProxyAuthorization = new HttpCredentialsHeaderValue("Basic", base64token);
// Get the strong type out
System.Diagnostics.Debug.WriteLine("One of the ProxyAuthorixation values: {0}={1}",
request.Headers.ProxyAuthorization.Scheme,
request.Headers.ProxyAuthorization.Token);
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The ProxyAuthorization ToString() results: {0}", request.Headers.ProxyAuthorization.ToString());
}
public void DemonstrateHeaderRequestReferer()
{
var request = new HttpRequestMessage();
// This is not typically set with a string.
// Set the header with a strong type.
// Uri is either in the Windows.Foundation namespace (JavaScript and C++)
// or in the System.Net namespace (C#).
var value = new Uri("http://example.com/");
request.Headers.Referer = value;
// Get the strong type out
System.Diagnostics.Debug.WriteLine("Referer absolute uri: {0}", request.Headers.Referer.AbsoluteUri);
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The Host ToString() results: {0}", request.Headers.Referer.ToString());
}
public void DemonstrateHeaderRequestUserAgent()
{
var request = new HttpRequestMessage();
bool parsedOk = false;
// Set the header with a string.
parsedOk = request.Headers.UserAgent.TryParseAdd("testprogram/1.0");
// Set the header with a strong type.
request.Headers.UserAgent.Add(new HttpProductInfoHeaderValue("myprogram", "2.2"));
// Get the strong type out
foreach (var value in request.Headers.UserAgent)
{
System.Diagnostics.Debug.WriteLine("One of the UserAgent values: {0} / {1}", value.Product.Name, value.Product.Version);
}
// The ToString() is useful for diagnostics, too.
System.Diagnostics.Debug.WriteLine("The UserAgent ToString() results: {0}", request.Headers.UserAgent.ToString());
}
Hinweise
Die HttpRequestHeaderCollection ist eine Sammlung der HTTP-Header, die einer HTTP-Anforderung zugeordnet sind. Das HttpRequestHeaderCollection-Objekt kann verwendet werden, um die spezifischen Header für eine HTTP-Anforderung abzurufen oder festzulegen. Die meisten Eigenschaften des HttpRequestHeaderCollection-Objekts bieten Zugriff auf den Wert eines bestimmten HTTP-Headers.
Die Headers-Eigenschaft für HttpRequestMessage gibt ein HttpRequestHeaderCollection-Objekt zurück. Die DefaultRequestHeaders-Eigenschaft für HttpClient gibt auch ein HttpRequestHeaderCollection-Objekt zurück. Dies sind die beiden Methoden zum Erstellen eines HttpRequestHeaderCollection-Objekts.
Die HttpRequestHeaderCollection stellt HTTP-Header für eine HTTP-Anforderung dar, die ein App-Entwickler festlegen kann, nicht alle Header, die möglicherweise mit der Anforderung gesendet werden. Der HttpBaseProtocolFilter fügt einige zusätzliche Header hinzu.
Header für eine HTTP-Anforderung können vom zugrunde liegenden Stapel geändert werden. Aus diesem Grund möchte eine App möglicherweise einen Headerwert aus der HttpRequestHeaderCollection abrufen, nachdem die Anforderung abgeschlossen wurde.
Auflisten der Sammlung in C# oder Microsoft Visual Basic
Sie können ein HttpRequestHeaderCollection-Objekt in C# oder Microsoft Visual Basic durchlaufen. In vielen Fällen, z. B. mit foreach-Syntax , führt der Compiler diese Umwandlung für Sie durch, und Sie müssen nicht explizit in IEnumerable
umwandeln. Wenn Sie eine explizite Umwandlung durchführen müssen, z. B. wenn Sie GetEnumerator aufrufen möchten, wandeln Sie das Auflistungsobjekt in IEnumerable<T> mit einem KeyValuePair-Wert von String und String als Einschränkung um.
Eigenschaften
Accept |
Ruft die HttpMediaTypeWithQualityHeaderValueCollection von HttpMediaTypeWithQualityHeaderValue-Objekten ab, die den Wert eines Accept-HTTP-Headers für eine HTTP-Anforderung darstellen. |
AcceptEncoding |
Ruft die HttpContentCodingWithQualityHeaderValueCollection von HttpContentCodingWithQualityHeaderValue-Objekten ab, die den Wert eines Accept-Encoding-HTTP-Headers für eine HTTP-Anforderung darstellen. |
AcceptLanguage |
Ruft die HttpLanguageRangeWithQualityHeaderValueCollection von HttpLanguageRangeWithQualityHeaderValue-Objekten ab, die den Wert eines Accept-Language-HTTP-Headers für eine HTTP-Anforderung darstellen. |
Authorization |
Ruft das HttpCredentialsHeaderValue-Objekt ab, das den Wert eines Autorisierungs-HTTP-Headers für eine HTTP-Anforderung darstellt, oder legt es fest. |
CacheControl |
Ruft die HttpCacheDirectiveHeaderValueCollection ab, die den Wert eines Cache-Control-HTTP-Headers für eine HTTP-Anforderung darstellt. |
Connection |
Ruft die HttpConnectionOptionHeaderValueCollection von HttpConnectionOptionHeaderValue-Objekten ab, die den Wert eines Connection HTTP-Headers für eine HTTP-Anforderung darstellen. |
Cookie |
Ruft die HttpCookiePairHeaderValueCollection von HttpCookiePairHeaderValue-Objekten ab, die den Wert eines cookie-HTTP-Headers darstellen, der für eine HTTP-Anforderung gesendet wird. |
Date |
Ruft das DateTime-Objekt ab, das den Wert eines Date-HTTP-Headers für eine HTTP-Anforderung darstellt, oder legt es fest. |
Expect |
Ruft die HttpExpectationHeaderValueCollection von HttpExpectationHeaderValue-Objekten ab, die den Wert eines Expect HTTP-Headers für eine HTTP-Anforderung darstellen. |
From |
Ruft die Zeichenfolge ab, die den Wert eines From HTTP-Headers für eine HTTP-Anforderung darstellt, oder legt diesen fest. |
Host |
Ruft den HostName ab, der den Wert eines Host-HTTP-Headers für eine HTTP-Anforderung darstellt, oder legt diesen fest. |
IfModifiedSince |
Ruft das DateTime-Objekt ab, das den Wert eines If-Modified-Since-HTTP-Headers für eine HTTP-Anforderung darstellt, oder legt es fest. |
IfUnmodifiedSince |
Ruft das DateTime-Objekt ab, das den Wert eines If-Unmodified-Since-HTTP-Headers für eine HTTP-Anforderung darstellt, oder legt es fest. |
MaxForwards |
Ruft einen ganzzahligen Wert ab, der den Wert eines Max-Forwards-HTTP-Headers für eine HTTP-Anforderung darstellt, oder legt diesen fest. |
ProxyAuthorization |
Ruft das HttpCredentialsHeaderValue-Objekt ab, das den Wert eines PROXY-Authorization-HTTP-Headers für eine HTTP-Anforderung darstellt, oder legt es fest. |
Referer |
Ruft den URI ab, der den Wert eines Referer-HTTP-Headers für eine HTTP-Anforderung darstellt, oder legt diesen fest. |
Size |
Ruft die Anzahl der Objekte in der HttpRequestHeaderCollection ab. |
TransferEncoding |
Ruft die HttpTransferCodingHeaderValueCollection von HttpTransferCodingHeaderValue-Objekten ab, die den Wert eines Transfer-Encoding-HTTP-Headers für eine HTTP-Anforderung darstellen. |
UserAgent |
Ruft die HttpProductInfoHeaderValueCollection von HttpProductInfoHeaderValue-Objekten ab , die den Wert eines User-Agent-HTTP-Headers für eine HTTP-Anforderung darstellen. |
Methoden
Append(String, String) |
Fügt am Ende der HttpRequestHeaderCollection ein neues Element hinzu. |
Clear() |
Entfernt alle Objekte aus der HttpRequestHeaderCollection. |
First() |
Ruft einen Iterator zum ersten Element in der HttpRequestHeaderCollection ab. |
GetView() |
Gibt eine unveränderliche Ansicht der HttpRequestHeaderCollection zurück. |
HasKey(String) |
Bestimmt, ob die HttpRequestHeaderCollection den angegebenen Schlüssel enthält. |
Insert(String, String) |
Fügt ein Element in der HttpRequestHeaderCollection ein oder ersetzt es durch den angegebenen Schlüssel und Wert. |
Lookup(String) |
Sucht ein Element in der HttpRequestHeaderCollection , sofern vorhanden. |
Remove(String) |
Entfernt ein bestimmtes Objekt aus der HttpRequestHeaderCollection. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle HttpRequestHeaderCollection-Objekt darstellt. |
TryAppendWithoutValidation(String, String) |
Versuchen Sie, das angegebene Element ohne Validierung an die HttpRequestHeaderCollection anzufügen. |