HttpClient vs HttpWebRequest

Ho un file di grandi dimensioni che devo inviare a un client Web API … I dati sono in più parti. Il problema è, se il file viene inviato su richiesta web http, quindi viene caricato rapidamente sul webapi. Per questa richiesta, il contenuto del file viene scritto direttamente sul stream della richiesta.

Dove lo stesso file viene inviato su Httpclient (.net 4.5), il caricamento è lento rispetto alla richiesta web http. Sto usando multipartformdatacontent in Httpclient post async.

Quindi, per file di grandi dimensioni, dobbiamo utilizzare solo la richiesta web? o ci sono delle impostazioni su Httpclient che rendono il caricamento più veloce?

HttpClient è più simile a un browser senza testa. È uno strumento potente e ideale se stai per creare molte richieste http. Ad esempio, puoi impostare intestazioni e contenuti predefiniti. Ecco i primi 5 modi in cui differisce da una HttpWebRequest che viene presa da qui

  1. Un’istanza HttpClient è il posto dove configurare estensioni, impostare intestazioni predefinite, cancellare richieste in sospeso e altro ancora.
  2. Puoi rilasciare tutte le richieste che desideri attraverso una singola istanza HttpClient.
  3. HttpClients non sono legati a particolari server o host HTTP; puoi inviare qualsiasi richiesta HTTP utilizzando la stessa istanza HttpClient.
  4. È ansible derivare da HttpClient per creare client specializzati per determinati siti o modelli
  5. HttpClient utilizza il nuovo pattern orientato alle attività per gestire le richieste asincrone, semplificando enormemente la gestione e il coordinamento di più richieste in sospeso.

Stavo usando FileStreamContent con httpclient … Ma quando ho usato ByteArrayContent, ha funzionato bene.

Non sono sicuro di come e perché questo ha fatto la differenza, ma l’invio di byte sullo stream è un modo migliore piuttosto che inviare lo stream