我正在使用 Asp.net web api 构建 web 服务,并且我必须从 AXIS IP 摄像机获取图像。但是,相机使用 Digest 身份验证。所以我的 C# 代码看起来像这样:
WebClient webClient = new WebClient();
webClient.UseDefaultCredentials = true;
webClient.Credentials = new NetworkCredential("***", "***");
byte[] imageStream = webClient.DownloadData("http://192.168.0.90/axis-cgi/jpg/image.cgi");
这一切都行得通,但是在查看 Fiddler 时,我发现客户端发送一个请求而无需身份验证,并返回 401 错误。之后,它会发送具有摘要安全性的邮件。
我在这里找到了手动凭据注入的解决方案:
http://kristofmattei.be/2013/02/20/webclient-not-sending-credentials-heres-why/
但这看起来不对。它使用基本身份验证,我真的不想要,而且看起来有点不专业。
有什么方法可以立即发送签名的请求,还是因为我注意到相机在第一个请求中返回了随机数,所以这是如何工作的?