Вы также можете сделать это через библиотеки. NET, как в C# или VB. Вот как это работает с HttpWebRequest
(при условии, что вы не используете task
или async
):
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
async
версия:
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
В любом случае Лучше всего убедиться, что reqStream выходит за пределы области видимости и удаляется до вызова GetResponse, чтобы данные запроса были полностью записаны.