Https 使用F发布请求

Https 使用F发布请求,https,f#,Https,F#,我想用一个包含简单键值对的主体发出POST请求 像{Id:VVE87BDA-B0A1-48F3-A7C7-F3482CE2UIJ} 如何在F中执行此操作???请查看库 您也可以通过.NET库(如C或VB中的)来实现这一点。假设您不使用task或async,以下是它如何与HttpWebRequest一起工作: 在这两种情况下,最好确保reqStream超出范围并在GetResponse调用之前被释放,以确保请求数据被完全写入 Http.RequestString ( "http://

我想用一个包含简单键值对的主体发出POST请求 像{Id:VVE87BDA-B0A1-48F3-A7C7-F3482CE2UIJ} 如何在F中执行此操作???

请查看库


您也可以通过.NET库(如C或VB中的)来实现这一点。假设您不使用task或async,以下是它如何与HttpWebRequest一起工作:

在这两种情况下,最好确保reqStream超出范围并在GetResponse调用之前被释放,以确保请求数据被完全写入

Http.RequestString
  ( "http://httpbin.org/post", 
    headers = [ ContentType HttpContentTypes.Json ],
    body = TextRequest """ {"test": 42} """)
let obj = {| Id = "VVE87BDA-B0A1-48F3-A7C7-F3482CE2UIJ" |}

let req = WebRequest.CreateHttp "http://www.example.com"
req.Method <- "POST"
req.ContentType <- "application/json"

do (
    use reqStream = req.GetRequestStream()
    use sw = new StreamWriter(reqStream )
    obj |> JsonConvert.SerializeObject |> sw.Write
)

use resp = req.GetResponse()
use respStream = resp.GetResponseStream()
use sr = new StreamReader(respStream)
let respBody = sr.ReadToEnd()

printfn "%s" respBody
let obj = {| Id = "VVE87BDA-B0A1-48F3-A7C7-F3482CE2UIJ" |}

let req = WebRequest.CreateHttp "http://www.example.com"
req.Method <- "POST"
req.ContentType <- "application/json"

do! async {
    use! reqStream = req.GetRequestStreamAsync() |> Async.AwaitTask
    use sw = new StreamWriter(reqStream )
    do! obj |> JsonConvert.SerializeObject |> sw.WriteAsync |> Async.AwaitTask
}

use! resp = req.AsyncGetResponse()
use respStream = resp.GetResponseStream()
use sr = new StreamReader(respStream)
let! respBody = sr.ReadToEndAsync() |> Async.AwaitTask

printfn "%s" respBody