【问题标题】:HttpClient Time_waitHttpClient Time_wait
【发布时间】:2021-03-23 00:48:46
【问题描述】:

我使用 HttpClient 将连接器从 unity 连接到 influxdb。但是这个问题太愤怒了,我该怎么做这个代码编辑?我在 3 周前学习了 c#.... 我试过了 私有静态只读 HttpClient client = new HttpClient();

但还有更多新的创建 tcp...time_wait

这是我的代码

代码 1

public async Task GetPositionAsync()
{
    using (HttpClient client = new HttpClient())
    {
        using (HttpResponseMessage response = await client.GetAsync(Url))
        {
            using (HttpContent content = response.Content)
            {
                 getdata = content.ReadAsStringAsync().Result;
            }
        }
    }

    client.Dispose();
}

代码 2

    HttpClient client = new HttpClient();

    int refreshTime = 5;

    client.DefaultRequestHeaders.Add("Authorization", "Token " + token);
    //client.DefaultRequestHeaders.Add("Accept", "application/csv");
    client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip");

    var fluxQuery = "from(bucket: \"DT_Object\")\n"
                   + "|> range(start: -6h)"
                   + "|> filter(fn: (r) => r[\"_measurement\"] ==\" NPC\")"
                   + "|> filter(fn: (r) => r[\"NAME\"] == \"NPC\")"
                   + "|> filter(fn: (r) => r[\"_field\"] == \"X\" or r[\"_field\"] == \"Y\" or r[\"_field\"] == \"Z\")"
                   + "|> aggregateWindow(every: " + refreshTime + "s, fn: mean, createEmpty: false)"
                   + "|> yield(name: \"mean\")";

    var data = new StringContent(fluxQuery, Encoding.UTF8, "application/vnd.flux");

    var response = await client.PostAsync(requestUrl, data);
    Debug.Log(response);
    // var responseString = await client.GetStringAsync(requestUrl);
    // Debug.Log("get data : " + responseString);
    //response.Content = "application/CSV";
    var result = response.Content.ReadAsByteArrayAsync();

    Debug.Log("데이터 읽어줘 " + result.ToString());

    if (result == null)
    {
        Debug.Log("결과없음");
    }

    Debug.Log("result : " + result);



    client.Dispose();
}

【问题讨论】:

    标签: httpclient influxdb


    【解决方案1】:

    最简单的解决办法是reuse HttpClient:

    private static readonly HttpClient client = new();
    public async Task GetPositionAsync()
    {
        using (HttpResponseMessage response = await client.GetAsync(Url))
        {
            using (HttpContent content = response.Content)
            {
                 getdata = await content.ReadAsStringAsync();
            }
        }
    }
    

    【讨论】:

    • 谢谢你的朋友,但是这个 HttpClient 客户端 = new();元组错误...结束修改
    • 感谢一位朋友。但是这个 HttpClient 客户端 = new();元组错误,...所以修改 HttpClient client = new HttpClient (); C#有multithreadconnectmanager??你知道另外两个作业中的一个类创建代码吗?
    • @user15351791: HttpClient 旨在同时从多个线程安全使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多