http低级别流

时间:2018-04-11 11:02:10

标签: f# http-streaming

为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

1 个答案:

答案 0 :(得分:1)

不使用ReadToEndAsync,而是在while循环中使用ReadAsync。 C#中有很多关于如何使用这些api的例子,这里有一个简单的例子:ReadAsync get data from buffer

此处FSharp.Core还有基于异步的流apis代码示例:http://www.fssnip.net/nP/title/Async-demo