[英]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.