Condividi tramite


HttpClient Classe

Definizione

Invia richieste HTTP e riceve risposte HTTP da una risorsa identificata da un URI. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale 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
Ereditarietà
Object Platform::Object IInspectable HttpClient
Attributi
Implementazioni

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Esempio

Il codice di esempio seguente illustra come OTTENERE contenuto da un server Web come stringa.

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 classe HttpClient viene spesso usata da un'app per scaricare e quindi analizzare il testo. È possibile che la codifica dei caratteri specificata nell'intestazione Content-Type da un server HTTP non corrisponda alla codifica dei caratteri del corpo della risposta HTTP (la codifica XML in un documento XML, ad esempio). Un modo per usare HttpClient con testo consiste nel chiamare il metodo GetStringAsync e passare la stringa restituita al parser di testo. Tuttavia, questo può causare errori se il tipo di contenuto non è un tipo expressible come stringa. Un modo affidabile per usare HttpClient con un parser XML consiste nel chiamare il metodo GetBufferAsync e analizzare il buffer per l'elemento "<?xml>". Usare quindi la codifica dei caratteri specificata ("<xmlversion="1.0" encoding="UTF-8"?>", ad esempio) per analizzare il corpo della risposta HTTP. Per altri formati di testo, è possibile usare metodi simili in cui l'app analizza la parte iniziale del corpo della risposta HTTP per determinare la codifica dei caratteri usata.

Commenti

L'istanza della classe HttpClient funge da sessione per inviare richieste HTTP e ricevere risposte. Un'istanza di HttpClient è una raccolta di impostazioni che si applicano a tutte le richieste eseguite da tale istanza. Inoltre, ogni istanza di HttpClient usa il proprio pool di connessioni, isolando le richieste dalle richieste eseguite da altre istanze HttpClient.

HttpClient funge anche da classe da usare con filtri per client HTTP più specifici. Un esempio è httpClientFilter che fornisce metodi aggiuntivi specifici di un servizio di social network (ad esempio un metodo GetFriends).

Se un'app usa HttpClient e le classi correlate nello spazio dei nomi Windows.Web.Http scarica grandi quantità di dati (50 megabyte o più), l'app deve trasmettere tali download e non usare il buffer predefinito. Se viene usato il buffer predefinito, l'utilizzo della memoria client avrà dimensioni molto elevate, causando una riduzione delle prestazioni.

Per codice di esempio in C# e C++/WinRT che illustra come usare HttpClient per connettersi a un server HTTP, vedere HttpClient.

Per codice di esempio in JavaScript e HTML che illustra come usare HttpClient per connettersi a un server HTTP, vedere Connessione a un server HTTP tramite Windows.Web.Http.

Cronologia delle versioni

Versione di Windows Versione dell'SDK Valore aggiunto
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)

Costruttori

HttpClient()

Inizializza una nuova istanza della classe HttpClient . Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

HttpClient(IHttpFilter)

Inizializza una nuova istanza della classe HttpClient con un filtro specifico per la gestione dei messaggi di risposta HTTP. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

Proprietà

DefaultPrivacyAnnotation

Invia richieste HTTP e riceve risposte HTTP da una risorsa identificata da un URI. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

DefaultRequestHeaders

Ottiene una raccolta di intestazioni che devono essere inviate con ogni richiesta. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

Metodi

Close()

Chiude l'istanza di HttpClient e rilascia le risorse allocate. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

DeleteAsync(Uri)

Inviare una richiesta DELETE all'URI specificato come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

Dispose()

Esegue attività definite dall'applicazione, come rilasciare o reimpostare risorse non gestite.

GetAsync(Uri)

Inviare una richiesta GET all'URI specificato come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

GetAsync(Uri, HttpCompletionOption)

Inviare una richiesta GET all'URI specificato con un'opzione di completamento HTTP come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

GetBufferAsync(Uri)

Inviare una richiesta GET all'URI specificato e restituire il corpo della risposta come buffer in un'operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

GetInputStreamAsync(Uri)

Inviare una richiesta GET all'URI specificato e restituire il corpo della risposta come flusso in un'operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

GetStringAsync(Uri)

Inviare una richiesta GET all'URI specificato e restituisce il corpo della risposta come stringa in un'operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

PostAsync(Uri, IHttpContent)

Inviare una richiesta POST all'URI specificato come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

PutAsync(Uri, IHttpContent)

Inviare una richiesta PUT all'URI specificato come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

SendRequestAsync(HttpRequestMessage)

Inviare una richiesta HTTP come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

SendRequestAsync(HttpRequestMessage, HttpCompletionOption)

Inviare una richiesta HTTP con un'opzione di completamento HTTP come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

ToString()

Restituisce una stringa che rappresenta l'oggetto HttpClient corrente. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

TryDeleteAsync(Uri)

Inviare una richiesta DELETE all'URI specificato come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

TryGetAsync(Uri)

Invia una richiesta GET all'URI specificato come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

TryGetAsync(Uri, HttpCompletionOption)

Invia una richiesta GET all'URI specificato come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

TryGetBufferAsync(Uri)

Inviare una richiesta GET all'URI specificato e restituire il corpo della risposta come HttpGetBufferResult con un valore IBuffer in un'operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

TryGetInputStreamAsync(Uri)

Inviare una richiesta GET all'URI specificato e restituire il corpo della risposta come flusso in un'operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

TryGetStringAsync(Uri)

Inviare una richiesta GET all'URI specificato e restituisce il corpo della risposta come stringa in un'operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

TryPostAsync(Uri, IHttpContent)

Invia una richiesta POST all'URI specificato come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

TryPutAsync(Uri, IHttpContent)

Invia una richiesta PUT all'URI specificato come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

TrySendRequestAsync(HttpRequestMessage)

Invia una richiesta HTTP all'URI specificato come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

TrySendRequestAsync(HttpRequestMessage, HttpCompletionOption)

Invia una richiesta HTTP con un'opzione di completamento all'URI specificato come operazione asincrona. Per indicazioni sulla programmazione per la classe HttpClient ed esempi di codice, vedere l'argomento concettuale HttpClient .

Si applica a

Vedi anche