代码之家  ›  专栏  ›  技术社区  ›  gtx911

检查HttpClient是否有连接

  •  0
  • gtx911  · 技术社区  · 6 年前

    httpClient 我做了一个POST请求,但是问题是即使有

    using (var httpClient = new HttpClient())
    {
        httpClient.BaseAddress = new Uri(proxySettingsConfiguration.BaseAdress);
    
        var json = JsonConvert.SerializeObject(item);
        var parameters = new Dictionary<string, string> { { "Application", "Demo" }, { "Payload", json } };
        var encodedContent = new FormUrlEncodedContent(parameters);
    
        var response = await httpClient.PostAsync(proxySettingsConfiguration.RequestUri, encodedContent);
    }
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   Edwinke    6 年前

    最近我使用了Youtube API,我在获取数据、搜索歌曲名称等方面遇到了同样的问题,我所做的就是把

    response = await httpClient.PostAsync(proxySettingsConfiguration.RequestUri, encodedContent);
    

    在try/catch中,应该是这样的

    try
            {
                response = await httpClient.PostAsync(proxySettingsConfiguration.RequestUri, encodedContent);
            }
            catch (Exception ex)
            {//In my case I was looking at this error
    
                if (ex.GetType().ToString() == "Google.Apis.Auth.OAuth2.Responses.TokenResponseException")
                {
                    MessageBox.Show("Failed to login", "Error on login",
                           MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    MessageBox.Show("Failed to login", "Error on login",
                           MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
    

    如果您打印出异常(messagebox,debug),您将看到它是一种错误类型,或者您可以搜索有关您正在使用的API的更多信息,并查看它可以抛出什么错误类型,找到一个好的,您可以添加多个具有不同消息的错误类型,这样您的程序就不会在出现某种错误时崩溃。希望能有点帮助。