【发布时间】:2019-12-28 07:48:13
【问题描述】:
我认为HttpClient 应该能够处理301 错误代码,并重定向到正确的地址。但是使用以下地址(https://www.npr.org/templates/rss/podcast.php?id=510298),它会引发异常。浏览器能够正确处理它。只是想了解是否有出路还是我错过了什么。
HttpClient client = new HttpClient();
var s = await client
.GetStringAsync("https://www.npr.org/templates/rss/podcast.php?id=510298");
抛出
Test1 [0:00.779] Failed: System.Net.Http.HttpRequestException : Response
status code does not indicate success: 301 (Moved Permanently).
System.Net.Http.HttpRequestException : Response status code does not
indicate success: 301 (Moved Permanently).
at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
at System.Net.Http.HttpClient.GetStringAsyncCore(Task`1 getTask)
at XUnitTestProject1.UnitTest1.Test1() in
C:\Users\res\source\repos\test\XUnitTestProject1\UnitTest1.cs:line 13
【问题讨论】:
-
当你跟踪一个 url 并收到 301 错误时,你必须处理错误并进行新的调用,这就是浏览器在幕后所做的事情。 HTTP 客户端无法为您执行此操作,因为它不知道您想对错误执行什么操作,即您是否要更新保存 url 的位置,以便下一次调用直接转到新 url,你想跟随新地址的链接,你想调用一个不同的 url,你想让操作失败吗?如何处理异常完全取决于您
标签: c# dotnet-httpclient http-status-code-301