【问题标题】:http low level streamshttp 低级流
【发布时间】:2018-04-11 11:02:09
【问题描述】:

对于 Web 请求的写入和读取流有较低级别的方法,您在数据进入时读取或写入,请帮助 sn-p。

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

【问题讨论】:

  • 在数据进入时读取流的低级方法
  • 没关系。我在下面得到了答案。

标签: f# http-streaming


【解决方案1】:

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

FSharp.Core 中还有基于异步的流 api,这里有一个代码示例:http://www.fssnip.net/nP/title/Async-demo

【讨论】:

    猜你喜欢
    • 2016-04-28
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多