Http-потоки низкого уровня

Существует более низкоуровневый подход к записи и чтению потока для веб-запросов, когда вы читаете или пишете по мере поступления данных, пожалуйста, помогите с фрагментом.

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

низкоуровневый подход к чтению потоков по мере поступления данных

Developer11 11.04.2018 14:16

Неважно. Я получил ответ ниже.

Developer11 11.04.2018 15:09
1
2
86
1

Ответы 1

Вместо использования ReadToEndAsync используйте ReadAsync в цикле while. В C# есть множество примеров использования этих API, вот простой: ReadAsync получить данные из буфера

Также в FSharp.Core есть API потока на основе Async, здесь пример кода: http://www.fssnip.net/nP/title/Async-demo

Другие вопросы по теме