HttpRequestHeaderCollection Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona una colección de los encabezados HTTP asociados a una solicitud 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
- Herencia
- Atributos
- Implementaciones
-
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
Requisitos de Windows
Familia de dispositivos |
Windows 10 (se introdujo en la versión 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)
|
Ejemplos
En el código de ejemplo siguiente se muestra un método para obtener y establecer encabezados de solicitud en un objeto HttpRequestMessage mediante las propiedades del objeto HttpRequestHeaderCollection. El espacio de nombres Windows.Web.Http.Headers también tiene una serie de clases de valores y colección de encabezados fuertemente tipadas para encabezados HTTP específicos que se pueden usar para obtener y establecer encabezados con validación.
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());
}
Comentarios
HttpRequestHeaderCollection es una colección de los encabezados HTTP asociados a una solicitud HTTP. El objeto HttpRequestHeaderCollection se puede usar para obtener o establecer los encabezados específicos en una solicitud HTTP. La mayoría de las propiedades del objeto HttpRequestHeaderCollection proporcionan acceso al valor de un encabezado HTTP específico.
La propiedad Headers en HttpRequestMessage devuelve un objeto HttpRequestHeaderCollection. La propiedad DefaultRequestHeaders en HttpClient también devuelve un objeto HttpRequestHeaderCollection. Estos son los dos métodos para construir un objeto HttpRequestHeaderCollection.
HttpRequestHeaderCollection representa encabezados HTTP en una solicitud HTTP que un desarrollador de aplicaciones puede establecer, no todos los encabezados que pueden enviarse con la solicitud. HttpBaseProtocolFilter agregará algunos encabezados adicionales.
La pila subyacente puede cambiar los encabezados de una solicitud HTTP. Este sería el motivo por el que una aplicación podría querer obtener un valor de encabezado de HttpRequestHeaderCollection una vez completada la solicitud.
Enumeración de la colección en C# o Microsoft Visual Basic
Puede recorrer en iteración un objeto HttpRequestHeaderCollection en C# o Microsoft Visual Basic. En muchos casos, como el uso de la sintaxis foreach , el compilador realiza esta conversión por usted y no tendrá que convertir a IEnumerable
explícitamente. Si necesita convertir explícitamente, por ejemplo, si desea llamar a GetEnumerator, convierta el objeto de colección en IEnumerable<T> con un KeyValuePair de String y String como restricción.
Propiedades
Accept |
Obtiene los objetos HttpMediaTypeWithQualityHeaderValueCollection de HttpMediaTypeWithQualityHeaderValue que representan el valor de un encabezado HTTP Accept en una solicitud HTTP. |
AcceptEncoding |
Obtiene los objetos HttpContentCodingWithQualityHeaderValueCollection de los objetos HttpContentCodingWithQualityHeaderValue que representan el valor de un encabezado HTTP Accept-Encoding en una solicitud HTTP. |
AcceptLanguage |
Obtiene la httpLanguageRangeWithQualityHeaderValueCollection de los objetos HttpLanguageRangeWithQualityHeaderValue que representan el valor de un encabezado HTTP Accept-Language en una solicitud HTTP. |
Authorization |
Obtiene o establece el objeto HttpCredentialsHeaderValue que representa el valor de un encabezado HTTP de autorización en una solicitud HTTP. |
CacheControl |
Obtiene la httpCacheDirectiveHeaderValueCollection que representa el valor de un encabezado HTTP Cache-Control en una solicitud HTTP. |
Connection |
Obtiene la httpConnectionOptionHeaderValueCollection de los objetos HttpConnectionOptionHeaderValue que representan el valor de un encabezado HTTP de conexión en una solicitud HTTP. |
Cookie |
Obtiene la httpCookiePairHeaderValueCollection de los objetos HttpCookiePairHeaderValue que representan el valor de un encabezado HTTP cookie enviado en una solicitud HTTP. |
Date |
Obtiene o establece el objeto DateTime que representa el valor de un encabezado HTTP Date en una solicitud HTTP. |
Expect |
Obtiene la httpExpectationHeaderValueCollection de los objetos HttpExpectationHeaderValue que representan el valor de un encabezado HTTP expect en una solicitud HTTP. |
From |
Obtiene o establece la cadena que representa el valor de un encabezado FROM HTTP en una solicitud HTTP. |
Host |
Obtiene o establece el nombre de host que representa el valor de un encabezado HTTP de host en una solicitud HTTP. |
IfModifiedSince |
Obtiene o establece el objeto DateTime que representa el valor de un encabezado HTTP If-Modified-Since en una solicitud HTTP. |
IfUnmodifiedSince |
Obtiene o establece el objeto DateTime que representa el valor de un encabezado IF-Unmodified-Since en una solicitud HTTP. |
MaxForwards |
Obtiene o establece un valor entero que representa el valor de un encabezado HTTP Max-Forwards en una solicitud HTTP. |
ProxyAuthorization |
Obtiene o establece el objeto HttpCredentialsHeaderValue que representa el valor de un encabezado HTTP de autorización de proxy en una solicitud HTTP. |
Referer |
Obtiene o establece el URI que representa el valor de un encabezado HTTP del referer en una solicitud HTTP. |
Size |
Obtiene el número de objetos de HttpRequestHeaderCollection. |
TransferEncoding |
Obtiene la httpTransferCodingHeaderValueCollection de los objetos HttpTransferCodingHeaderValue que representan el valor de un encabezado HTTP Transfer-Encoding en una solicitud HTTP. |
UserAgent |
Obtiene la httpProductInfoHeaderValueCollection de los objetos HttpProductInfoHeaderValue que representan el valor de un encabezado HTTP del agente de usuario en una solicitud HTTP. |
Métodos
Append(String, String) |
Agrega un nuevo elemento al final de HttpRequestHeaderCollection. |
Clear() |
Quita todos los objetos de HttpRequestHeaderCollection. |
First() |
Recupera un iterador en el primer elemento de HttpRequestHeaderCollection. |
GetView() |
Devuelve una vista inmutable de HttpRequestHeaderCollection. |
HasKey(String) |
Determina si HttpRequestHeaderCollection contiene la clave especificada. |
Insert(String, String) |
Inserta o reemplaza un elemento en HttpRequestHeaderCollection por la clave y el valor especificados. |
Lookup(String) |
Busca un elemento en HttpRequestHeaderCollection si existe. |
Remove(String) |
Quita un objeto específico de HttpRequestHeaderCollection. |
ToString() |
Devuelve una cadena que representa el objeto HttpRequestHeaderCollection actual. |
TryAppendWithoutValidation(String, String) |
Intente anexar el elemento especificado a HttpRequestHeaderCollection sin validación. |