【问题标题】:Check HttpClient has connection检查 HttpClient 是否有连接
【发布时间】:2019-03-16 14:39:48
【问题描述】:

使用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

【问题讨论】:

标签: c# httpclient


【解决方案1】:

最近我使用了 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);
            }
        }

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

【讨论】:

    猜你喜欢
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    相关资源
    最近更新 更多