检查HttpClient是否已连接

时间:2018-09-06 09:36:26

标签: c# httpclient

使用httpClient我进行了POST请求,但是问题是,即使有 没有连接,因为目标API已关闭,它不会返回任何错误。

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);
}

是否可以预先检查目的地是否可用?不使用PING

1 个答案:

答案 0 :(得分:1)

最近我使用了Youtube API,在获取数据,搜索歌曲名称...等方面也遇到了同样的问题,我所做的就是我将(放在您的情况下)

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

尝试/捕获,所以应该是

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);
            }
        }

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