Vag*_*lov 6 encoding f# json fsharp.data.typeproviders
我需要编码为使用F#JSON类型提供程序JsonValue.Request方法发送的UTF-8 HTTP有效负载.
Request允许指定HTTP头,但JSON类型提供程序负责将Content-Type头设置为"application/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
Run Code Online (Sandbox Code Playgroud)
PostDefaultEncoding是ISO-8859-1,不适用于我们的场景.
知道如何为JsonValue.Request有效载荷覆盖PostDefaultEncoding吗?
我认为该JsonValue.Request方法只是一个方便的助手,涵盖了最常见的场景,但不一定为您提供发出任意请求所需的所有功能。(也就是说,UTF-8 听起来是一个更合理的默认值。)
最通用的 F# Data 函数是Http.Request,它允许您以任何方式上传数据:
let buffer = System.Text.Encoding.UTF8.GetBytes ""
Http.RequestString
( "https://httpbin.org/post",
httpMethod="POST",
body=HttpRequestBody.BinaryUpload buffer )
Run Code Online (Sandbox Code Playgroud)
因此,如果您替换""为yourJsonValue.ToString(),则应发送带有 UTF-8 编码正文的请求。
| 归档时间: |
|
| 查看次数: |
471 次 |
| 最近记录: |