gpt4 book ai didi

.net - 使用客户端凭据通过 SSL 的 HttpWebRequest

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:10 25 4
gpt4 key购买 nike

我正在尝试使用 HttpWebRequest 获取需要用户名和密码的 https URI。如果我将 URI 放入浏览器,它会弹出一个对话框,要求提供凭据,然后就可以工作了。使用 HttpWebRequest 时出现 401 未授权错误。

NetworkCredentials 的文档说它不支持 SSL,但我找不到我应该使用的内容。

最佳答案

服务器使用的是 HTTP 基本身份验证还是其他类型?如果它使用 HTTP basic,那么您可以将 Web 请求的 Credentials 属性设置为包含正确用户名和密码的凭据,并将 PreAuthenticate 属性设置为 true。

这是一个示例(未经测试,因此仅将其用作指南):

var uri = new Uri("https://somesite.com/something");
var request = WebRequest.Create(uri) as HttpWebRequest;
request.Credentials = new NetworkCredential("myUserName","myPassword");
request.PreAuthenticate = true;

var response = request.GetResponse();

注意:根据我的经验,.NET 框架中存在一些奇怪的行为。你会认为它应该按照代码所说的去做,但它实际上是这样做的:

  • 不带凭据向服务器发送请求
  • 服务器响应 401
  • 使用您提供的凭据重新发送请求
  • 服务器接受请求。

我不知道它为什么会这样做,因为它看起来坏了,所以也许这是我机器的一个怪癖,也许它不会发生在你身上。

如果您的应用程序对性能不敏感,并且您的请求不是大数据的 POST,您可能不会注意到,但为了绕过它,我必须手动构建 HTTP 基本身份验证 header 并将其设置在HttpWebRequest 通过操作 Headers 集合手动进行。

关于.net - 使用客户端凭据通过 SSL 的 HttpWebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/947103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com