2012-09-21 15 views
7

से HttpClient के साथ खंडित सामग्री को पढ़ने के लिए मैं क्षैतिज रूप से सामग्री (HTTP 1.1 खंडित स्थानांतरण एन्कोडिंग के अर्थ में) को पढ़ने के लिए HttpClient का उपयोग करना चाहता हूं।Async ASP.NET WebApi

मैं तरीकों async पर HttpContent तलाश में हूं: MSDN link

हालांकि,, बाइट सरणी के लिए लौट आए टास्क के मामले में उदाहरण के लिए:

लौटे टास्क वस्तु का सब के बाद पूरा हो जाएगा सामग्री को बाइट सरणी

मुझे चंकित सामग्री ठीक से मिल रही है क्योंकि सर्वर समय से पहले नहीं जानता है जब सभी डेटा उपलब्ध होंगे, टी hus मुझे नहीं पता कि सारी सामग्री कब आएगी। कार्य पूरा होने के लिए, संभवतः घंटों के लिए प्रतीक्षा करने के बजाय, मैं आने वाले भाग को पढ़ने में सक्षम होना चाहता हूं।

क्या मैं किसी भी तरह प्रतिक्रिया प्रतिक्रिया का हिस्सा पढ़ सकता हूं, जैसे कि कुछ कार्य जो पूरा हो जाएंगे जब प्रत्येक 4K बाइट सामग्री को प्रतिक्रिया में प्राप्त किया जाता है?

इस मामले में HttpClient फायदेमंद का उपयोग कर रहा है?

उत्तर

10

HttpClient.SendAsync का उपयोग करके आप HttpCompletionOption पैरामीटर को HttpClient को बताने के लिए कह सकते हैं कि आपके लिए प्रतिक्रिया बफर न करें और जैसे ही यह हेडर हो जाए। फिर आप एक स्ट्रीम प्राप्त करने के लिए ReadAsStreamAsync का उपयोग कर सकते हैं जो आपको डेटा खींचने की अनुमति देगा।

+0

आशाजनक लग रहा है। धन्यवाद। इससे पहले कि मैं इसे एक उत्तर के रूप में स्वीकार करने से पहले इसे आज़माएं। – Tony

+0

खूबसूरती से काम किया। मैंने HttpSelfHostServer का उपयोग किया और यह सुनिश्चित किया कि सामग्री खराब हो गई है। मैं ग्राहक पक्ष पर भाग में अपने आगमन का पालन कर सकता था। मैन्युअल रूप से खंडित सामग्री को पार्स करने की कोई आवश्यकता नहीं थी - ट्रांसफर एन्कोडिंग के अर्थ में धारा पहले से ही खराब हो गई थी, भले ही डेटा भाग में उपलब्ध हो। – Tony

संबंधित मुद्दे