当前位置: 首页 > 知识库问答 >
问题:

C#HttpClient检测重定向

魏澄邈
2023-03-14

我需要检测何时有重定向。我的第一个想法是检查301的状态代码,但是:

var link = "https://grnh.se/8dc368b82us?s=LinkedIn&source=LinkedIn";
var responseMessage = await httpClient.GetAsync(link);

responseMessage返回“OK”,但在浏览器中,此链接html" target="_blank">返回301并重定向。

因此,如果我不能依赖于此,那么我决定只比较请求URI和响应URI。

GetAsync返回任务

https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0

系统。网络。网络响应包含响应URI的属性,但我可以将其与HttpClient一起使用吗?或者我必须为请求使用WebRequest吗?

https://docs.microsoft.com/en-us/dotnet/api/system.net.webresponse?view=net-5.0

有更好的方法吗?

注意:这将扫描数百万个链接,因此我更愿意实例化一个HttpClient。Microsoft建议使用HttpClient而不是WebRequest:https://docs.microsoft.com/en-us/dotnet/api/system.net.webresponse?view=net-5.0

共有1个答案

彭令秋
2023-03-14

您可以这样禁用自动重定向:

var httpClient = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
var link = "https://grnh.se/8dc368b82us?s=LinkedIn&source=LinkedIn";
var responseMessage = await httpClient.GetAsync(link);

然后,您可以检查重定向比较响应消息。带有常见重定向代码的状态代码

MovedPermanently = 301
Redirect = 302
TemporaryRedirect = 307

新位置将在响应消息中。标题。位置,如果需要,您可以再次请求它。

 类似资料:
  • 问题内容: 我正在将一些数据发布到正在回答302移动临时的服务器上。 我希望HttpClient遵循重定向并自动获取新位置,因为我相信这是HttpClient的默认行为。但是,我得到一个例外,而不是按照重定向:( 这是相关的代码,任何想法都将不胜感激: 问题答案: HttpClient的默认行为符合HTTP规范(RFC 2616)的要求 您可以通过子类化DefaultRedirectStrateg

  • 对于一个项目,我必须使用一个使用GET动词的API,它必须需要“content-type”属性,但这不是标准的,我希望将该属性设置为“application/json”。 我使用的是C#HttpClient,在整个宇宙中寻找之后,我找不到一种方法来实现它。我总是有个“ProtocolViolationException”,显然... 我在用这个代码 提前致谢:)

  • 主要内容:Maven依赖关系,重定向处理示例HttpClient自动处理所有类型的重定向,除了HTTP规范明确禁止的那些重定向需要用户干预。 请参阅其他(状态码)在POST上重定向,并且按照HTTP规范的要求将PUT请求转换为GET请求。 可以使用自定义重定向策略来放宽由HTTP规范施加的对POST方法的自动重定向的限制。 在下面的教程中,我们将使用来处理http重定向。 Maven依赖关系 我们使用maven来管理依赖关系,并使用Apac

  • 问题内容: 我想使用jQuery来获取URL,并明确检查它是否响应302重定向,但 不 遵循重定向。 jQuery 似乎总是遵循重定向。如何防止这种情况,并且不遵循重定向就可以看到重定向? 标题有很多问题,例如“ jquery ajax redirect”,但它们似乎都涉及实现其他目标,而不仅仅是直接检查服务器给出的状态。 问题答案: AJAX请求永远不会有机会不遵循重定向(即,它必须遵循重定向)

  • 我一直在尝试用C语言编写一些碰撞检测代码,下面是我目前拥有的函数,它在每帧调用一次,但是由于某些原因,当两个精灵重叠时,碰撞不起作用 任何指向正确方向的指示都将不胜感激

  • 问题内容: 我在测试应用程序中成功实现了OpenCV平方检测示例,但是现在需要过滤输出,因为它很乱-还是我的代码错误? 我对减少偏斜(如那样)和进一步处理的四个角落很感兴趣…… 码: 编辑17/08/2012: 要在图像上绘制检测到的正方形,请使用以下代码: 问题答案: 这是反复出现的主题,由于我找不到相关的实现,因此决定接受挑战。 我对OpenCV中存在的squares演示进行了一些修改,下面生