2012-09-01 14 views
5

आज जब मैंने अनुरोध पोस्ट करने के लिए HttpWebRequest का उपयोग करने का प्रयास किया तो मैंने UserAgent के एन्कोडिंग के साथ एक समस्या से मुलाकात की।HttpWebRequest में UserAgent के एन्कोडिंग को कैसे बदला जाए?

आम तौर पर, उपयोगकर्ता एजेन्ट में लैटिन अक्षरों और विराम चिह्न होते हैं। हालांकि, मुझे एक आईओएस ऐप के वेब अनुरोधों को अनुकरण करने की आवश्यकता है जिसका UA में कुछ यूनिकोड (विशेष रूप से चीनी) वर्ण हैं।

कच्चे अनुरोध के लिए फिडलर का उपयोग करके, मैंने पाया कि ऐप ने अपने UA में यूनिकोड एन्कोडिंग का उपयोग किया था। मैं इसे सी # में पोस्ट नहीं कर सका; मुझे यह त्रुटि मिली:

You may not try to send Unicode in UserAgent. But it is really important for my project. Now I can simulate the request of App without the bytes of UA.

मैं UA एन्कोडिंग कैसे बदल सकता हूं?

उत्तर

2

मानकों के अनुसार (rfc 2616 (http/1.1), sec 2.2, 3.8. 14.43 और rfc 2047 (mime, part 3), sec 4, 5), आप किसी भी अन्य एन्कोडिंग का उपयोग नहीं कर सकते हैं, लेकिन उपयोगकर्ता-एजेंट जैसे किसी भी http शीर्षलेख फ़ील्ड के लिए iso-8859-1।

हालांकि, आप यूनिकोड स्ट्रिंग को 885 9 -1 - तारों पर मैप करने के लिए आरएफसी 2047 की एन्कोडिंग योजना लागू कर सकते हैं; संक्षेप में, आप अपने पाठ को एक वर्णसेट पहचानकर्ता के साथ लपेटते हैं और अपने संबंधित एन्कोडिंग में ऑक्टेट अनुक्रम के हेक्स मानों से यूनिकोड कोडपॉइंट्स को प्रतिस्थापित करते हैं।

उदाहरण:

User-Agent: Million-€-Browser, User-Agent: =?utf-8?q?Million-=e2=82=ac-Browser?= हो जाता है e2 82 ac जा रहा है यूरो प्रतीक का utf-8 ओकटेट अनुक्रम के साथ।

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