HttpClient Clase

Definición

Envía solicitudes HTTP y recibe respuestas HTTP de un recurso identificado por un URI. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

public ref class HttpClient sealed : IClosable, IStringable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Web.Http.IHttpClientFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [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 HttpClient final : IClosable, 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)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.Activatable(Windows.Web.Http.IHttpClientFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class HttpClient final : IClosable, IStringable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Web.Http.IHttpClientFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[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 HttpClient : System.IDisposable, 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)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Web.Http.IHttpClientFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class HttpClient : System.IDisposable, IStringable
function HttpClient(filter)
Public NotInheritable Class HttpClient
Implements IDisposable, IStringable
Herencia
Object Platform::Object IInspectable HttpClient
Atributos
Implementaciones

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 cómo obtener contenido de un servidor web como una cadena.

using System;

var uri = new System.Uri("http://www.bing.com");
using (var httpClient = new Windows.Web.Http.HttpClient())
{
    // Always catch network exceptions for async methods
    try
    {
        string result = await httpClient.GetStringAsync(uri);
    }
    catch (Exception ex)
    {
        // Details in ex.Message and ex.HResult.
    }
}
// Having exited the scope of the using statement, httpClient.Dispose() will be called
// automatically, thus freeing up system resources (the underlying socket, and memory
// used for the object).
#include "winrt/Windows.Foundation.h"
#include "winrt/Windows.Web.Http.h"
using namespace winrt;

Windows::Foundation::IAsyncAction HttpClientExample()
{
    Windows::Foundation::Uri uri{ L"http://www.bing.com" };
    Windows::Web::Http::HttpClient httpClient{};

    // Always catch network exceptions for async methods
    try
    {
        auto response{ co_await httpClient.GetStringAsync(uri) };
    }
    catch (winrt::hresult_error const& ex)
    {
        // Details in ex.message() and ex.to_abi().
    }

    // The destructor of HttpClient frees system resources
    // (the underlying socket, and memory used for the object).
}
using namespace Windows::Foundation;
using namespace Windows::Web::Http;

uri = ref new Uri("http://example.com/datalist.aspx");
httpClient = ref new HttpClient();

// Always catch network exceptions for async methods
try 
{
    httpClient->GetStringAsync(uri);
}
catch 
{
    // Details in ex.Message and ex.HResult.   
}

// In C++/CX, the system resources used by httpClient object are released 
// when the object falls out of scope or by the destructor (delete operator).

La clase HttpClient suele usarse en una aplicación para descargar y, a continuación, analizar texto. Es posible que la codificación de caracteres especificada en el encabezado Content-Type por un servidor HTTP no coincida con la codificación de caracteres del cuerpo de la respuesta HTTP (la codificación XML en un documento XML, por ejemplo). Una manera de usar HttpClient con texto es llamar al método GetStringAsync y pasar la cadena devuelta al analizador de texto. Sin embargo, esto puede provocar errores si content-Type no es un tipo que se puede expresar como una cadena. Una manera confiable de usar HttpClient con un analizador XML es llamar al método GetBufferAsync y analizar el búfer para el elemento "<?xml>". A continuación, use la codificación de caracteres especificada ("<xmlversion="1.0" codificación="UTF-8"?>", por ejemplo) para analizar el cuerpo de la respuesta HTTP. Para otros formatos de texto, se pueden usar métodos similares en los que la aplicación examina la parte inicial del cuerpo de la respuesta HTTP para determinar la codificación de caracteres usada.

Comentarios

La instancia de clase HttpClient actúa como una sesión para enviar solicitudes HTTP y recibir respuestas. Una instancia de HttpClient es una colección de configuraciones que se aplican a todas las solicitudes ejecutadas por esa instancia. Además, cada instancia de HttpClient usa su propio grupo de conexiones, aislando sus solicitudes de las solicitudes ejecutadas por otras instancias de HttpClient.

HttpClient también actúa como una clase para usarla con filtros para clientes HTTP más específicos. Un ejemplo sería un HttpClientFilter que proporciona métodos adicionales específicos de un servicio de red social (un método GetFriends, por ejemplo).

Si una aplicación que usa HttpClient y clases relacionadas en el espacio de nombres Windows.Web.Http descarga grandes cantidades de datos (50 megabytes o más), la aplicación debe transmitir esas descargas y no usar el almacenamiento en búfer predeterminado. Si se usa el almacenamiento en búfer predeterminado, el uso de memoria del cliente obtendrá un rendimiento muy grande, lo que podría provocar una reducción del rendimiento.

Para obtener código de ejemplo en C# y C++/WinRT que muestra cómo usar HttpClient para conectarse a un servidor HTTP, consulte HttpClient.

Para obtener código de ejemplo en JavaScript y HTML que muestra cómo usar HttpClient para conectarse a un servidor HTTP, consulte Conexión a un servidor HTTP mediante Windows.Web.Http.

Historial de versiones

Versión de Windows Versión del SDK Valor agregado
1903 18362 TryDeleteAsync
1903 18362 TryGetAsync(Uri)
1903 18362 TryGetAsync(Uri,HttpCompletionOption)
1903 18362 TryGetBufferAsync
1903 18362 TryGetInputStreamAsync
1903 18362 TryGetStringAsync
1903 18362 TryPostAsync
1903 18362 TryPutAsync
1903 18362 TrySendRequestAsync(HttpRequestMessage)
1903 18362 TrySendRequestAsync(HttpRequestMessage,HttpCompletionOption)

Constructores

HttpClient()

Inicializa una nueva instancia de la clase HttpClient . Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

HttpClient(IHttpFilter)

Inicializa una nueva instancia de la clase HttpClient con un filtro específico para controlar los mensajes de respuesta HTTP. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

Propiedades

DefaultPrivacyAnnotation

Envía solicitudes HTTP y recibe respuestas HTTP de un recurso identificado por un URI. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

DefaultRequestHeaders

Obtiene una colección de encabezados que se deben enviar con cada solicitud. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

Métodos

Close()

Cierra la instancia de HttpClient y libera los recursos asignados. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

DeleteAsync(Uri)

Envíe una solicitud DELETE al URI especificado como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

Dispose()

Realiza tareas definidas por la aplicación asociadas a la liberación o al restablecimiento de recursos no administrados.

GetAsync(Uri)

Envía una solicitud GET al URI especificado como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

GetAsync(Uri, HttpCompletionOption)

Envíe una solicitud GET al URI especificado con una opción de finalización HTTP como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

GetBufferAsync(Uri)

Envíe una solicitud GET al URI especificado y devuelva el cuerpo de la respuesta como un búfer en una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

GetInputStreamAsync(Uri)

Envíe una solicitud GET al URI especificado y devuelva el cuerpo de la respuesta como una secuencia en una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

GetStringAsync(Uri)

Envía una solicitud GET al URI especificado y devuelve el cuerpo de la respuesta como una cadena en una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

PostAsync(Uri, IHttpContent)

Envíe una solicitud POST al URI especificado como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

PutAsync(Uri, IHttpContent)

Envía una solicitud PUT al URI especificado como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

SendRequestAsync(HttpRequestMessage)

Envía una solicitud HTTP como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

SendRequestAsync(HttpRequestMessage, HttpCompletionOption)

Enviar una solicitud HTTP con una opción de finalización HTTP como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

ToString()

Devuelve una cadena que representa el objeto HttpClient actual. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

TryDeleteAsync(Uri)

Envíe una solicitud DELETE al URI especificado como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

TryGetAsync(Uri)

Envía una solicitud GET al URI especificado como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

TryGetAsync(Uri, HttpCompletionOption)

Envía una solicitud GET al URI especificado como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

TryGetBufferAsync(Uri)

Envíe una solicitud GET al URI especificado y devuelva el cuerpo de la respuesta como HttpGetBufferResult con un valor IBuffer en una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

TryGetInputStreamAsync(Uri)

Envíe una solicitud GET al URI especificado y devuelva el cuerpo de la respuesta como una secuencia en una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

TryGetStringAsync(Uri)

Envía una solicitud GET al URI especificado y devuelve el cuerpo de la respuesta como una cadena en una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

TryPostAsync(Uri, IHttpContent)

Envía una solicitud POST al URI especificado como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

TryPutAsync(Uri, IHttpContent)

Envía una solicitud PUT al URI especificado como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

TrySendRequestAsync(HttpRequestMessage)

Envía una solicitud HTTP al URI especificado como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

TrySendRequestAsync(HttpRequestMessage, HttpCompletionOption)

Envía una solicitud HTTP con una opción de finalización al URI especificado como una operación asincrónica. Para obtener instrucciones de programación para la clase HttpClient y ejemplos de código, consulte el tema conceptual HttpClient .

Se aplica a

Consulte también