c# digest身份验证1. digest http request 类
public class DigestHttpWebRequest
{
private string _user;
private string _password;
private string _realm;
private string _nonce;
private string _qop;
private string _cnonce;
private string _opaque;
private DateTime _cnonceDate;
private int _nc;
private string _requestMethod = WebRequestMethods.Http.Get;
private string _contentType;
private byte[] _postData;
public DigestHttpWebRequest(string user, string password)
{
_user = user;
_password = password;
}
public DigestHttpWebRequest(string user, string password, string realm)
{
_user = user;
_password = password;
_realm = realm;
}
public string Method
{
get { return _requestMethod; }
set { _requestMethod = value; }
}
public string ContentType
{
get { return _contentType; }
set { _contentType = value; }
}
public byte[] PostData
{
get { return _postData; }
set { _postData = value; }
}
public HttpWebResponse GetResponse(Uri uri)
{
HttpWebResponse response = null;
int infiniteLoopCounter = 0;
int maxNumberAttempts = 2;
while ((response == null ||
response.StatusCode != HttpStatusCode.Accepted) &&
infiniteLoopCounter < maxNumberAttempts)
{
try
{
var request = CreateHttpWebRequestObject(uri);
// If we've got a recent Auth header, re-use it!