使用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
答案 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的更多信息,并查看它会抛出哪些错误类型,找到一个好的类型。 ,您可以添加多个带有不同消息的消息,这样,如果程序出现某种错误,程序就不会崩溃。希望它能有所帮助。