Potrzebuję kodować jako ładunki HTTP UTF-8 wysyłane przy użyciu metody JsonValue.Request dostawcy typu JSON.Jak skonfigurować dostawcę typu F # JSON, aby korzystać z UTF-8 dla żądań POST?
Żądanie pozwala na określenie nagłówków HTTP, ale dostawca typu JSON dba o ustawienie nagłówka Content-Type jako "application/json" bez określania kwalifikatora "charset". Jeśli spróbuję ustawić typ zawartości osobiście, otrzymam zduplikowaną wartość nagłówka (co spowoduje błąd). I tylko „application/json” następujący kod wybiera defauls Kodowanie:
let getEncoding contentType =
let charset = charsetRegex.Match(contentType)
if charset.Success then
Encoding.GetEncoding charset.Groups.[1].Value
else
HttpEncodings.PostDefaultEncoding
PostDefaultEncoding jest to ISO-8859-1, który nie nadaje się w naszym scenariuszu.
Jakieś pojęcie, w jaki sposób PostDefaultEncoding może zostać nadpisany dla ładunku JsonValue.Request?
Dziękuję Tomas, za pomocą Http.Request zdecydowanie rozwiązać. Zamiast tego użyłem Http.fs, ale z twoją sugestią mogłem osiągnąć wszystko za pomocą jednej biblioteki. Ale byłoby miło nieco poprawić JsonValue.Request, ponieważ wyeliminowałoby to potrzebę całej tej ceremonii wokół uzyskania bufora ciągów, określania ciała żądania HTTP itp. Jednym ze sposobów na to jest uszanowanie nagłówka Content-Encoding. Po określeniu może wybrać kodowanie ładunku z pominięciem domyślnego ISO-8859-1. –