gpt4 book ai didi

c# - ASP.NET HTTPClient 获取等待激活的请求状态

转载 作者:行者123 更新时间:2023-12-02 21:01:45 25 4
gpt4 key购买 nike

我正在编写一个方法,该方法将通过向 RestApi URL 发出 GET 请求来返回 JSON 数据。当我在 Debug模式下运行应用程序时,我得到以下数据作为响应。

Id = 337,状态 = WaitingForActivation,方法 =“{null}”,结果 =“{尚未计算}”

这是我的代码:

public class Methods
{
public static async Task<JObject> Get(string url, string username, string password)
{
var credentials = new NetworkCredential(username, password);
HttpClientHandler handler = new HttpClientHandler { Credentials = credentials };
HttpClient client = new HttpClient(handler);
// client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = await client.GetAsync(url);

if (response.IsSuccessStatusCode)
{
return JObject.Parse(await response.Content.ReadAsStringAsync());
}
return new JObject { response.StatusCode };
}
}

这是我尝试访问数据的 View :

public IActionResult Index()
{
// Methods RestMethod = new Methods();
var data = Methods.Get("http://url/products", "domain\userid", "Password");

return View();
}

当我在 var data = ..... View 中添加调试时,我正在等待激活

非常感谢任何帮助。 :)

谢谢

最佳答案

如果您要使用 async/await,您应该从调用入口点开始执行。当前,您调用 Get 方法,该方法返回正在运行的任务,但您不等待它完成。最简单的修复方法是对 Index 方法代码进行如下更改:

public async Task<IActionResult> Index()
{
// Methods RestMethod = new Methods();
var data = await Methods.Get("http://url/products", "domain\userid", "Password");
return View();
}

另请参阅Stephen Cleary's blog有关 async/await 的更多详细信息,他就该主题以及众所周知的陷阱和模式撰写了大量文章。

关于c# - ASP.NET HTTPClient 获取等待激活的请求状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37928733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com