2014-03-06 39 views
35

我有一個大文件,我必須發送到一個web api客戶端...數據是多部分。 問題是,如果文件是通過http web請求發送的,那麼它會在webapi上快速上傳。對於此請求,文件內容直接寫入請求流。HttpClient vs HttpWebRequest

就像通過Httpclient(.net 4.5)發送相同文件一樣,與http web請求相比,上傳速度很慢。我在Httpclient後異步中使用multipartformdatacontent。

因此,對於大文件,我們是否只使用web請求?或者是否有任何Httpclient上的設置,使上傳速度更快?

+1

HttpWebRequest的車型單個請求。 HttpClient模型,以及一個客戶端 - 可以提出多個請求。 HttpClient更近,所以更有可能擁有最新的知識。雖然,我不知道它在某些領域是否特別快;但如果您在WebAPI空間或REST中執行任何操作,肯定會更推薦。 –

+4

HttpClient在封面下使用HttpWebRequest實際發出HTTP請求,所以你應該能夠獲得相同的性能。 –

+1

是的..但再次表現取決於內容如何通過客戶端..我使用FileStreamContent,現在我已經改變了ByteArrayContent ... – user2325247

回答

39

HttpClient更像是一個無頭瀏覽器。如果您要創建多個http請求,它是一個強大且理想的工具。例如,您可以設置默認標題和內容。以下是前5種方法從HttpWebRequest它不同於這是從here

  1. 採取的一個HttpClient的實例是配置的擴展,設置默認頭,取消未完成的請求多的地方。
  2. 您可以通過單個HttpClient實例發出儘可能多的請求。
  3. HttpClient不綁定到特定的HTTP服務器或主機;您可以使用相同的HttpClient實例提交任何HTTP請求。
  4. 您可以從HttpClient的派生來創建特定的網站或圖案
  5. HttpClient的用來處理異步請求,使它更容易大幅管理和協調多個未決請求新任務導向型的專業客戶。
+4

謝謝。這不能回答我的問題。我有一個等待postAsync方法,甚至沒有幫助。我想知道webclient與httpclient相比如何更快? – user2325247

+2

通常會建議您歸因:http://blogs.msdn.com/b/henrikn/archive/2012/02/11/httpclient-is-here.aspx – Paddy

+2

歸因文章兩次,評論文章另一次相當有趣。 .. :-) – Giuseppe

3

我用httpclient使用FileStreamContent ...但是當我使用ByteArrayContent時,它工作正常。

我不知道如何和爲什麼本作的差別,但在流發送的字節是一個更好的辦法,而不是發送該視頻流

+0

你從哪裏得到FileStreamContent?這不是默認的現成HttpContent實現。 –

+0

它應該在.net 4.5中...或者檢查web api客戶端... – user2325247

+0

不可以。我很確定這不是其中之一。 –

相關問題