繁体   English   中英

HttpClient getAsync 只工作一次

[英]HttpClient getAsync just works once

我正在尝试调用端点以在我的网站中获取一些信息,但是当我运行 getAsync 时,它仅在当前进程中第一次起作用。

static async Task Main(string[] args)
{

    await GetUserInfo("srmilton"); //Working
    await GetUserInfo("srmilton"); //Not Working

    while (true)
    {
        var res = await GetUserInfo("srmilton");
    }
}

public static async Task<(string,string)> GetUserInfo(string username)
{
    string url = "https://www.mywebsite.com/api/user/detail";
    var baseAddress = new Uri(url);

    using (var handler2 = new HttpClientHandler { UseCookies = false })
    using (var client2 = new HttpClient(handler2) { BaseAddress = baseAddress })
    {

        client2.DefaultRequestHeaders.Clear();
        client2.DefaultRequestHeaders.Add("Cookie", "session=zgbEqIjfSC7M7QdTTpHDkpWLt");
        client2.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
        AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36");
        client2.DefaultRequestHeaders.Add("x-requested-with", "XMLHttpRequest");
        client2.DefaultRequestHeaders.Add("referer", "https://www.mywebsite.com/");

        var result = await client2.GetAsync("");

        string responseString = await result.Content.ReadAsStringAsync();
        dynamic jsonresponse = JObject.Parse(responseString);
        id = jsonresponse.userInfo.user.id;
        sec_id = jsonresponse.userInfo.user.secUid;
        return (id, sec_id);
    }
}

第一次调用GetUserInfo函数时,它会从 api 返回正确的 json 响应,但第二个循环卡在 GetAsync 中。 我已经尝试过.ConfigureAwait(false).Result甚至只创建一次HttpClient用,但它已经挂在第二个循环上。

我不知道我做错了什么,如果有人可以解释并展示使这项工作的正确方法,我将不胜感激。

解决了。 我的 getAsync 标头上缺少 Accept 标头。

client2.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
               

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM