मुझे F # JSON प्रकार प्रदाता JsonValue.Request विधि का उपयोग करके भेजे गए यूटीएफ -8 HTTP पेलोड के रूप में एन्कोड करने की आवश्यकता है।POST अनुरोधों के लिए यूटीएफ -8 का उपयोग करने के लिए F # JSON प्रकार प्रदाता को कॉन्फ़िगर कैसे करें?
अनुरोध HTTP शीर्षलेख निर्दिष्ट करने की अनुमति देता है लेकिन JSON प्रकार प्रदाता सामग्री-प्रकार शीर्षलेख को "अनुप्रयोग/जेसन" के रूप में "charset" क्वालीफायर निर्दिष्ट किए बिना सेट करने का ख्याल रखता है। यदि मैं सामग्री प्रकार को स्वयं सेट करने का प्रयास करता हूं तो मैं डुप्लिकेट हेडर वैल्यू (वास्तव में एक त्रुटि उत्पन्न करता हूं) के साथ समाप्त होता हूं। और केवल "application/json" के साथ निम्नलिखित कोड का चयन करता है defauls एन्कोडिंग:
let getEncoding contentType =
let charset = charsetRegex.Match(contentType)
if charset.Success then
Encoding.GetEncoding charset.Groups.[1].Value
else
HttpEncodings.PostDefaultEncoding
PostDefaultEncoding है ISO-8859-1 जो हमारे परिदृश्य में उपयुक्त नहीं है है।
कोई विचार है कि JsonValue.Request पेलोड के लिए PostDefaultEncoding को ओवरराइड किया जा सकता है?
धन्यवाद टॉमस, Http.Request का उपयोग करके निश्चित रूप से इसे हल किया जाएगा। मैंने इसके बजाय Http.fs का उपयोग किया लेकिन आपके सुझाव के साथ मैं केवल एक पुस्तकालय के साथ सबकुछ प्राप्त कर सकता था। लेकिन JsonValue में थोड़ा सुधार करना अच्छा होगा। अनुरोध करें क्योंकि यह स्ट्रिंग बफर प्राप्त करने के आसपास इस समारोह की आवश्यकता को खत्म कर देगा, HTTP अनुरोध निकाय इत्यादि निर्दिष्ट करेगा। ऐसा करने का एक तरीका सामग्री-एन्कोडिंग हेडर का सम्मान करना है। एक बार यह निर्दिष्ट हो जाने पर यह डिफ़ॉल्ट आईएसओ -885 9 -1 ओवरराइडिंग पेलोड एन्कोडिंग का चयन कर सकता है। –