快速的問題。 HttpClient在404錯誤中拋出異常,但從請求返回的404頁實際上對我的應用程序有用。是否可以忽略404響應並將請求處理爲200?HttpClient - 忽略404
1
A
回答
0
主機名解析失敗與向已知主機請求不存在文檔的情況不同,後者必須單獨處理。我懷疑你正面臨解決方案失敗(因爲它會拋出,而向已知主機請求不存在的資源不會拋出,但會給你一個很好的「NotFound」響應)。
下面的代碼片段處理這兩種情況下:
// urls[0] known host, unknown document
// urls[1] unknown host
var urls = new string[] { "http://www.example.com/abcdrandom.html", "http://www.abcdrandom.eu" };
using (HttpClient client = new HttpClient())
{
HttpResponseMessage response = new HttpResponseMessage();
foreach (var url in urls)
{
Console.WriteLine("Attempting to fetch " + url);
try
{
response = await client.GetAsync(url);
// If we get here, we have a response: we reached the host
switch (response.StatusCode)
{
case System.Net.HttpStatusCode.OK:
case System.Net.HttpStatusCode.NotFound: { /* handle 200 & 404 */ } break;
default: { /* whatever */ } break;
}
}
catch (HttpRequestException ex)
{
//kept to a bare minimum for shortness
var inner = ex.InnerException as WebException;
if (inner != null)
{
switch (inner.Status)
{
case WebExceptionStatus.NameResolutionFailure: { /* host not found! */ } break;
default: { /* other */ } break;
}
}
}
}
}
的WebExceptionStatus
枚舉包含許多種可能的故障(包括Unknown
)的代碼來處理。
1
您可以使用流從異常別人的
WebClient client = new WebClient();
try
{
client.DownloadString(url);
}
catch (System.Net.WebException exception)
{
string responseText;
using (var reader = new System.IO.StreamReader(exception.Response.GetResponseStream()))
{
responseText = reader.ReadToEnd();
throw new Exception(responseText);
}
}
禮貌讀取404的內容,但我無法找到在那裏我得到這個信息源
相關問題
- 1. HttpClient忽略AllowAutoRedirect指令
- 2. 如何配置Log4Net忽略404錯誤?
- 3. Angular 2,可以忽略Http.get 404
- 4. 如何忽略SSL策略以執行HTTPClient請求?
- 5. 404 Not Found with HttpClient
- 6. IS忽略被忽略
- 7. bin - 忽略或不忽略
- 8. 忽略映射忽略
- 9. Automapper忽略屬性忽略
- 10. svn:忽略不忽略xcuserdata
- 11. SVN忽略被忽略
- 12. 如何讓HttpClient Json序列化程序忽略空值
- 13. HttpClient忽略單個計算機上的編碼
- 14. Jmeter/HttpClient在「檢索所有嵌入式資源」時忽略keepalive?
- 15. 如何在使用TLSv1.2的Apache HttpClient中忽略「localhost」?
- 16. 如何使Apache Commons HttpClient 3.1忽略HTTPS證書無效?
- 17. PCL HttpClient響應忽略沒有域名的Cookie
- 18. 忽略餅乾
- 19. 忽略
- 20. 忽略
- 21. 忽略
- 22. 忽略
- 23. 忽略
- 24. 忽略壞證書 - .NET CORE
- 25. android http請求忽略cookie
- 26. G ++忽略忽略_Pragma診斷
- 27. vagrant忽略Vagrantfile安裝點忽略
- 28. 忽略未被忽略的文件
- 29. java webstart忽略System.getProperties()或Syste.setProperties()被忽略
- 30. 搖籃忽略守護忽略標誌
我沒有看到提到使用.NET 4.5的HttpClient的問題? –
請注意我沒有使用ASP.NET。這是一個WinForms應用程序。 –
它看起來像你可能必須實現你自己的[httpmessagehandler](http://msdn.microsoft.com/en-us/library/system.net.http.httpmessagehandler(v = vs.110).aspx) – rene