为Web请求编写和读取流的低级方法,您在读取或写入数据时,请提供一个代码段。
let request = WebRequest.CreateHttp url
request.Method <- "PUT"
async {
request.ContentLength <- (int64) schema.Length
use! requestStream = request.GetRequestStreamAsync() |> Async.AwaitTask
requestStream.Write(Encoding.UTF8.GetBytes(schema), 0, schema.Length)
requestStream.Close()
use! response = request.AsyncGetResponse()
use stream = response.GetResponseStream()
use streamReader = new StreamReader(stream)
let! data = streamReader.ReadToEndAsync() |> Async.AwaitTask
return Ok(data)
}
用于上述代码的参考文献。
http://www.fssnip.net/7PK/title/Send-async-HTTP-POST-request
答案 0 :(得分:1)
不使用ReadToEndAsync
,而是在while循环中使用ReadAsync
。 C#中有很多关于如何使用这些api的例子,这里有一个简单的例子:ReadAsync get data from buffer
此处FSharp.Core
还有基于异步的流apis代码示例:http://www.fssnip.net/nP/title/Async-demo