HttpContent Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Classe di base che rappresenta un corpo dell'entità HTTP e le intestazioni del contenuto.
public ref class HttpContent abstract : IDisposable
public abstract class HttpContent : IDisposable
type HttpContent = class
interface IDisposable
Public MustInherit Class HttpContent
Implements IDisposable
- Ereditarietà
-
HttpContent
- Derivato
- Implementazioni
Esempio
Nell'esempio seguente viene illustrata un'implementazione personalizzata di HttpContent. Alcuni metodi, nonostante siano definiti come virtual
e non abstract
, devono comunque essere sottoposti a override nell'implementazione per un comportamento ottimale.
public class MyContent : HttpContent
{
private readonly string _data;
public MyContent(string data)
{
_data = data;
}
// Minimal implementation needed for an HTTP request content,
// i.e. a content that will be sent via HttpClient, contains the 2 following methods.
protected override bool TryComputeLength(out long length)
{
// This content doesn't support pre-computed length and
// the request will NOT contain Content-Length header.
length = 0;
return false;
}
// SerializeToStream* methods are internally used by CopyTo* methods
// which in turn are used to copy the content to the NetworkStream.
protected override Task SerializeToStreamAsync(Stream stream, TransportContext? context)
=> stream.WriteAsync(Encoding.UTF8.GetBytes(_data)).AsTask();
// Override SerializeToStreamAsync overload with CancellationToken
// if the content serialization supports cancellation, otherwise the token will be dropped.
protected override Task SerializeToStreamAsync(Stream stream, TransportContext? context, CancellationToken cancellationToken)
=> stream.WriteAsync(Encoding.UTF8.GetBytes(_data), cancellationToken).AsTask();
// In rare cases when synchronous support is needed, e.g. synchronous CopyTo used by HttpClient.Send,
// implement synchronous version of SerializeToStream.
protected override void SerializeToStream(Stream stream, TransportContext? context, CancellationToken cancellationToken)
=> stream.Write(Encoding.UTF8.GetBytes(_data));
// CreateContentReadStream* methods, if implemented, will be used by ReadAsStream* methods
// to get the underlying stream and avoid buffering.
// These methods will not be used by HttpClient on a custom content.
// They are for content receiving and HttpClient uses its own internal implementation for an HTTP response content.
protected override Task<Stream> CreateContentReadStreamAsync()
=> Task.FromResult<Stream>(new MemoryStream(Encoding.UTF8.GetBytes(_data)));
// Override CreateContentReadStreamAsync overload with CancellationToken
// if the content serialization supports cancellation, otherwise the token will be dropped.
protected override Task<Stream> CreateContentReadStreamAsync(CancellationToken cancellationToken)
=> Task.FromResult<Stream>(new MemoryStream(Encoding.UTF8.GetBytes(_data))).WaitAsync(cancellationToken);
// In rare cases when synchronous support is needed, e.g. synchronous ReadAsStream,
// implement synchronous version of CreateContentRead.
protected override Stream CreateContentReadStream(CancellationToken cancellationToken)
=> new MemoryStream(Encoding.UTF8.GetBytes(_data));
}
Commenti
È possibile usare vari contenuti HTTP. Questi includono quanto segue.
ByteArrayContent : contenuto rappresentato da una matrice di byte, funge anche da classe di base per StringContent e FormUrlEncodedContent.
StringContent: contenuto basato su stringa, serializzato per impostazione predefinita come
text/plain
Content-Type
con codificaUTF-8
.FormUrlEncodedContent: contenuto con tuple nome/valore serializzate come
application/x-www-form-urlencoded
Content-Type
.MultipartContent: contenuto in grado di serializzare più oggetti HttpContent diversi come
multipart/*
Content-Type
.JsonContent: contenuto che serializza gli oggetti come
application/json
Content-Type
con codificaUTF-8
per impostazione predefinita.
La classe di contenuto HTTP può essere derivata da un utente per fornire logica di serializzazione del contenuto personalizzata.
Costruttori
HttpContent() |
Inizializza una nuova istanza della classe HttpContent. |
Proprietà
Headers |
Ottiene le intestazioni del contenuto HTTP definite in RFC 2616. |
Metodi
CopyTo(Stream, TransportContext, CancellationToken) |
Serializza il contenuto HTTP in un flusso di byte e lo copia in |
CopyToAsync(Stream) |
Serializzare il contenuto HTTP in un flusso di byte e copiarlo nell'oggetto flusso fornito come parametro |
CopyToAsync(Stream, CancellationToken) |
Serializzare il contenuto HTTP in un flusso di byte e copiarlo nell'oggetto flusso fornito come parametro |
CopyToAsync(Stream, TransportContext) |
Serializzare il contenuto HTTP in un flusso di byte e copiarlo nell'oggetto flusso fornito come parametro |
CopyToAsync(Stream, TransportContext, CancellationToken) |
Serializzare il contenuto HTTP in un flusso di byte e copiarlo nell'oggetto flusso fornito come parametro |
CreateContentReadStream(CancellationToken) |
Serializza il contenuto HTTP in un flusso di memoria. |
CreateContentReadStreamAsync() |
Serializzare il contenuto HTTP in un flusso di memoria come operazione asincrona. |
CreateContentReadStreamAsync(CancellationToken) |
Serializza il contenuto HTTP in un flusso di memoria come operazione asincrona. |
Dispose() |
Rilascia le risorse non gestite ed elimina le risorse gestite usate dal HttpContent. |
Dispose(Boolean) |
Rilascia le risorse non gestite usate dal HttpContent e, facoltativamente, elimina le risorse gestite. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
LoadIntoBufferAsync() |
Serializzare il contenuto HTTP in un buffer di memoria come operazione asincrona. |
LoadIntoBufferAsync(CancellationToken) |
Classe di base che rappresenta un corpo dell'entità HTTP e le intestazioni del contenuto. |
LoadIntoBufferAsync(Int64) |
Serializzare il contenuto HTTP in un buffer di memoria come operazione asincrona. |
LoadIntoBufferAsync(Int64, CancellationToken) |
Classe di base che rappresenta un corpo dell'entità HTTP e le intestazioni del contenuto. |
MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
ReadAsByteArrayAsync() |
Serializzare il contenuto HTTP in una matrice di byte come operazione asincrona. |
ReadAsByteArrayAsync(CancellationToken) |
Serializzare il contenuto HTTP in una matrice di byte come operazione asincrona. |
ReadAsStream() |
Serializza il contenuto HTTP e restituisce un flusso che rappresenta il contenuto. |
ReadAsStream(CancellationToken) |
Serializza il contenuto HTTP e restituisce un flusso che rappresenta il contenuto. |
ReadAsStreamAsync() |
Serializzare il contenuto HTTP e restituire un flusso che rappresenta il contenuto come operazione asincrona. |
ReadAsStreamAsync(CancellationToken) |
Serializzare il contenuto HTTP e restituire un flusso che rappresenta il contenuto come operazione asincrona. |
ReadAsStringAsync() |
Serializzare il contenuto HTTP in una stringa come operazione asincrona. |
ReadAsStringAsync(CancellationToken) |
Serializzare il contenuto HTTP in una stringa come operazione asincrona. |
SerializeToStream(Stream, TransportContext, CancellationToken) |
Quando sottoposto a override in una classe derivata, serializza il contenuto HTTP in un flusso. In caso contrario, genera un NotSupportedException. |
SerializeToStreamAsync(Stream, TransportContext) |
Serializzare il contenuto HTTP in un flusso come operazione asincrona. |
SerializeToStreamAsync(Stream, TransportContext, CancellationToken) |
Serializzare il contenuto HTTP in un flusso come operazione asincrona. |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
TryComputeLength(Int64) |
Determina se il contenuto HTTP ha una lunghezza valida in byte. |
Metodi di estensione
ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, JsonSerializerOptions, CancellationToken) |
Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona enumerabile. |
ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, JsonTypeInfo<TValue>, CancellationToken) |
Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona enumerabile. |
ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, CancellationToken) |
Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona enumerabile. |
ReadFromJsonAsync(HttpContent, Type, JsonSerializerOptions, CancellationToken) |
Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona. |
ReadFromJsonAsync(HttpContent, Type, JsonSerializerContext, CancellationToken) |
Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona. |
ReadFromJsonAsync(HttpContent, Type, CancellationToken) |
Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona. |
ReadFromJsonAsync<T>(HttpContent, JsonSerializerOptions, CancellationToken) |
Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona. |
ReadFromJsonAsync<T>(HttpContent, JsonTypeInfo<T>, CancellationToken) |
Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona. |
ReadFromJsonAsync<T>(HttpContent, CancellationToken) |
Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona. |