簡體   English   中英

在 Task 中分配返回值<String> HttpClient 異步到另一個變量

[英]Assign a return value in Task<String> HttpClient Async to another variable

我一直在將 Tast Async 函數中的返回值轉換為另一個變量。

           using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
            client.BaseAddress = new Uri("https://foo.com");
            await GetSecret(client);
        }
    }

    public static async Task<String> GetSecret(HttpClient client)
    {
        //JArray results = new JArray();
        string url = $"/strkey?api-version=2016-10-01";

        using (var httpResponse = await client.GetAsync(url))
        {
            httpResponse.EnsureSuccessStatusCode();
            string responsContent = await httpResponse.Content.ReadAsStringAsync();
            JObject password = JObject.Parse(responsContent);
            string ip = password["value"].ToString();
            return ip;
        }
    }

如何將ip的值分配給函數外? 例如,我想要如下內容:

public class objA
{
    public string key { get; set; }
    public objA(string ip)
    {
        key = ip;
    }
}

因為您的 await 任務返回一個字符串 ip,所以您可以輕松調用前面的方法,如下所示。

static async Task yourMethod(HttpClient client)
        {
            var obj = await GetSecret(client);
            Console.WriteLine(obj);
        }

在調用 HttpClient 的 using 范圍之外聲明一個變量

    public void MethodName()
    {
        var returnedIp = "";
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
            client.BaseAddress = new Uri("https://foo.com");
            returnedIp = await GetSecret(client);
        }
    }

正如上面在評論中指出的那樣,您不應該以現在的方式使用 HttpClient,但我已經回答了您的問題,但沒有更改您當前使用的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM