HttpRequestHeaderCollection Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет коллекцию заголовков HTTP, связанных с HTTP-запросом.
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
- Наследование
- Атрибуты
- Реализации
-
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
Семейство устройств |
Windows 10 (появилось в 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v1.0)
|
Примеры
В следующем примере кода показан метод для получения и задания заголовков запросов в объекте HttpRequestMessage с помощью свойств объекта HttpRequestHeaderCollection. Пространство имен Windows.Web.Http.Headers также содержит ряд строго типизированных коллекций заголовков и классов значений для определенных заголовков HTTP, которые можно использовать для получения и задания заголовков с проверкой.
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());
}
Комментарии
HttpRequestHeaderCollection — это коллекция http-заголовков, связанных с HTTP-запросом. Объект HttpRequestHeaderCollection можно использовать для получения или задания определенных заголовков в HTTP-запросе. Большинство свойств объекта HttpRequestHeaderCollection предоставляют доступ к значению определенного заголовка HTTP.
Свойство Headers в HttpRequestMessage возвращает объект HttpRequestHeaderCollection. Свойство DefaultRequestHeaders в HttpClient также возвращает объект HttpRequestHeaderCollection. Это два метода для создания объекта HttpRequestHeaderCollection.
HttpRequestHeaderCollection представляет заголовки HTTP в HTTP-запросе, который может задать разработчик приложения, а не все заголовки, которые в конечном итоге могут быть отправлены вместе с запросом. HttpBaseProtocolFilter добавит некоторые дополнительные заголовки.
Заголовки в HTTP-запросе могут быть изменены базовым стеком. Именно поэтому приложению может потребоваться получить значение заголовка из httpRequestHeaderCollection после завершения запроса.
Перечисление коллекции на C# или Microsoft Visual Basic
Вы можете выполнить итерацию по объекту HttpRequestHeaderCollection в C# или Microsoft Visual Basic. Во многих случаях, например с помощью синтаксиса foreach , компилятор выполняет это приведение за вас, и вам не нужно выполнять приведение IEnumerable
явно. Если необходимо выполнить приведение явным образом, например, если вы хотите вызвать GetEnumerator, приведите объект коллекции к IEnumerable<T> с параметром KeyValuePairstring и String в качестве ограничения.
Свойства
Accept |
Возвращает httpMediaTypeWithQualityHeaderValueCollection объектов HttpMediaTypeWithQualityHeaderValue , представляющих значение заголовка Accept HTTP в HTTP-запросе. |
AcceptEncoding |
Возвращает httpContentCodingWithQualityHeaderValueCollection объектов HttpContentCodingWithQualityHeaderValue , представляющих значение http-заголовка Accept-Encoding в HTTP-запросе . |
AcceptLanguage |
Возвращает httpLanguageRangeWithQualityHeaderValueCollection объектов HttpLanguageRangeWithQualityHeaderValue , представляющих значение http-заголовка Accept-Language в HTTP-запросе . |
Authorization |
Возвращает или задает объект HttpCredentialsHeaderValue , представляющий значение http-заголовка авторизации в HTTP-запросе. |
CacheControl |
Возвращает httpCacheDirectiveHeaderValueCollection , представляющее значение заголовка HTTP Cache-Control в HTTP-запросе . |
Connection |
Возвращает httpConnectionOptionHeaderValueCollection объектов HttpConnectionOptionHeaderValue , представляющих значение http-заголовка Connection в HTTP-запросе. |
Cookie |
Возвращает httpCookiePairHeaderValueCollection объектов HttpCookiePairHeaderValue , представляющих значение http-заголовка cookie , отправленного в HTTP-запрос. |
Date |
Возвращает или задает объект DateTime , представляющий значение http-заголовка Date в HTTP-запросе. |
Expect |
Возвращает httpExpectationHeaderValueCollection объектов HttpExpectationHeaderValue , представляющих значение http-заголовка Expect в HTTP-запросе. |
From |
Возвращает или задает строку, представляющую значение http-заголовка From в HTTP-запросе. |
Host |
Возвращает или задает имя узла , представляющее значение HTTP-заголовка узла в HTTP-запросе. |
IfModifiedSince |
Возвращает или задает объект DateTime , представляющий значение заголовка HTTP If-Modified-Since в HTTP-запросе . |
IfUnmodifiedSince |
Возвращает или задает объект DateTime , представляющий значение заголовка HTTP If-Unmodified-Since в HTTP-запросе . |
MaxForwards |
Возвращает или задает целочисленное значение, представляющее значение http-заголовка Max-Forwards в HTTP-запросе . |
ProxyAuthorization |
Возвращает или задает объект HttpCredentialsHeaderValue , представляющий значение http-заголовка Proxy-Authorization в HTTP-запросе . |
Referer |
Возвращает или задает универсальный код ресурса (URI ), представляющий значение http-заголовка Referer в HTTP-запросе. |
Size |
Возвращает количество объектов в коллекции HttpRequestHeaderCollection. |
TransferEncoding |
Возвращает httpTransferCodingHeaderValueCollection объектов HttpTransferCodingHeaderValue , представляющих значение http-заголовка Transfer-Encoding в HTTP-запросе . |
UserAgent |
Возвращает httpProductInfoHeaderValueCollection объектов HttpProductInfoHeaderValue , представляющих значение http-заголовка User-Agent в HTTP-запросе . |
Методы
Append(String, String) |
Добавляет новый элемент в конец httpRequestHeaderCollection. |
Clear() |
Удаляет все объекты из коллекции HttpRequestHeaderCollection. |
First() |
Извлекает итератор к первому элементу в httpRequestHeaderCollection. |
GetView() |
Возвращает неизменяемое представление объекта HttpRequestHeaderCollection. |
HasKey(String) |
Определяет, содержит ли httpRequestHeaderCollection указанный ключ. |
Insert(String, String) |
Вставляет или заменяет элемент в коллекции HttpRequestHeaderCollection указанным ключом и значением. |
Lookup(String) |
Находит элемент в коллекции HttpRequestHeaderCollection , если он существует. |
Remove(String) |
Удаляет определенный объект из коллекции HttpRequestHeaderCollection. |
ToString() |
Возвращает строку, представляющую текущий объект HttpRequestHeaderCollection . |
TryAppendWithoutValidation(String, String) |
Попробуйте добавить указанный элемент в коллекцию HttpRequestHeaderCollection без проверки. |