में HttpClient के साथ एन्कोडिंग मैं fogbugz XML API का उपयोग करके कुछ डेटा ले रहा हूं। यह एपीआई हमेशा यूटीएफ -8 के रूप में डेटा प्रदान करता है।.NET 4.5
अनुरोध करने के लिए WebClient
कक्षा का उपयोग करते समय मैं एन्कोडिंग सेट करने में सक्षम हूं। उदाहरण के लिए:
var result = new WebClient();
result.Encoding = Encoding.UTF8;
लेकिन HttpClient
कक्षा के बारे में क्या?
HttpClient client = new HttpClient();
मैं का उपयोग करना चाहिए:
client.GetByteArrayAsync(url);
... और फिर एक स्ट्रिंग के लिए एन्कोडिंग (UTF-8) से बाइट्स कन्वर्ट?
या क्या यूटीएफ -8 स्ट्रिंग के रूप में सामग्री को सीधे प्राप्त करने का कोई तरीका है? - मैं उम्मीद थी एन्कोडिंग HTTP प्रतिक्रिया में हेडर द्वारा निर्धारित किया जाना
<?xml version="1.0" encoding="UTF-8"?>
<response>
हाय जॉन। आपके उत्तर के लिए Thx। एन्कोडिंग टैग हमेशा प्रतिक्रिया शामिल है। फोगबगज़ केस में इसे हमेशा यूटीएफ -8 माना जाता है। यहाँ एक्सएमएल के शुरुआत का एक उदाहरण Xml संस्करण = "1.0" एन्कोडिंग = "UTF-8"?> .... मैं webclient के साथ इस पर भरोसा किया, वहाँ एन्कोडिंग नहीं था एपीआई से सम्मानित, इसलिए मुझे दस्तावेजी फीचर के बिना एपीआई पर दोबारा भरोसा नहीं करना पड़ेगा :-( तो बाइटएरे (जैसे मेरे कोड नमूने की तरह) प्राप्त करना सबसे सुरक्षित तरीका होना चाहिए? –
@ बोसएन्क्लर: क्लाइंट isn * बॉडी * से एन्कोडिंग नहीं ले जायेगा - इसे * हेडर * में निर्दिष्ट किया जाना चाहिए। लेकिन जैसा कि मैंने कहा है, सुरक्षित तरीका इसे बाइट्स के रूप में लाने और बाइनरी डेटा से इसे पार्स करना है। (बनाएँ बाइट सरणी को लपेटने के लिए 'मेमोरीस्ट्रीम'।) –
ठीक है लगता है कि यह सबसे अच्छा समाधान है। क्रिस ने भी उसी टी की सिफारिश की हिंग :) –