我一直在使用HttpWebRequest(目前作为通用Windows应用程序工作)从家庭网络上的IP安全摄像头获取JPEG快照。我最近得到了几个新的相机,认证似乎有点乱。看看Wireshark的跟踪,差异似乎如下:
第一个HTTP GET没有凭据发送,相机以401 Unauthorized响应 第二个HTTP GET现在具有编程的凭证,然后摄像机以数据
响应在后续请求中,程序似乎会自动发送带有凭据的HTTP GET。不幸的是,相机似乎并不喜欢这样,并以401 Unauthorized响应(即使请求格式与刚刚工作的格式相同)。
如果我退出程序并重新开始,我会看到与上面相同的初始序列(即没有凭据的HTTP GET,后跟带有凭据的HTTP GET),我得到了有效的响应。
Net我只能在每次调用程序时获得一个成功的请求。我的理论是,摄像机因此依赖于看到没有凭据的请求来重置内部的东西(可能是一些错误?)。
无论相机在做什么,在HTTP GET期间发送凭据时是否有专门控制的方式?
到目前为止,代码非常简单:
HttpWebRequest myHttpWebRequest = WebRequest.CreateHttp(requestURL); myHttpWebRequest.Credentials = new NetworkCredential(requestUser,requestPassword);
每次想要获取新快照时都会执行此操作,但即使每次都是新的HttpWebRequest,凭证也会在下次发出请求时默认缓存并重新显示。