在C#中通过HTTP进行实时数据流传输

时间:2018-12-17 21:00:40

标签: c# asp.net curl real-time dotnet-httpclient

我有一个curl调用,它将连接到数据流,并在每次将新值发布到数据流时返回一个值。

curl -XPOST -d uuid=\"94701e51-a24f-42b8-b8fd-81e0ecb79a2b\" http://bms.org/republish

我尝试过使用此代码生成HttpClient帖子以生成相同的http请求

主要:

static async Task Main(string[] args)
{
    Republish r = new Republish(); //The class name.
    try
    {
        Task.Run(() => r.Test()).Wait();
        Console.WriteLine("bla");
        Console.ReadKey();
    }
    catch (Exception ex)  //Exceptions here or in the function will be caught here
    {
        Console.WriteLine("Exception: " + ex.Message);
    }
}

public async Task<string> Test()
{
    var client = new HttpClient();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
    client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("curl", "7.48.0"));
    client.DefaultRequestHeaders.ExpectContinue = false;

    var requestContent = new StringContent("uuid=\"94701e51-a24f-42b8-b8fd-81e0ecb79a2b\"", Encoding.UTF8, "application/x-www-form-urlencoded");
    HttpResponseMessage response = await client.PostAsync("http://bms.org/republish", requestContent);
    HttpContent responseContent = response.Content;

    using (var reader = new StreamReader(await responseContent.ReadAsStreamAsync()))
    {
        Console.WriteLine(await reader.ReadToEndAsync()); 
    }
    //I never got to the return statement because it breaks.
}

但是这永远不会产生任何结果。经过一番搜索后,我认为这是因为正在等待客户端。PostAsync正在等待接收整个有效负载,然后再对其进行流传输。

如何实时流式传输?

0 个答案:

没有答案