0
所以我本來的web請求驗證碼:使用創建HttpWebResponse接口返回401未經授權錯誤
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.UseDefaultCredentials = true;
WebResponse response = request.GetResponse();
,我改變了這個以添加單元測試:
IHttpWebRequest request = IHttpWebRequestFactory.Create(uri);
request.UseDefaultCredentials = true;
IWebResponse response = request.GetResponse();
IHttpWebRequest:
public interface IHttpWebRequest
{
bool UseDefaultCredentials { get; set; }
IWebResponse GetResponse();
}
MyHttpWebRequest:
public class MyHttpWebRequest : IHttpWebRequest
{
private readonly HttpWebRequest httpWebRequest;
private bool useDefaultCredentials;
public MyHttpWebRequest(HttpWebRequest httpWebRequest)
{
this.httpWebRequest = httpWebRequest;
}
public bool UseDefaultCredentials
{
get { return useDefaultCredentials; }
set { useDefaultCredentials = value; }
}
public IWebResponse GetResponse()
{
return new MyWebResponse((HttpWebResponse)httpWebRequest.GetResponse());
}
}
IHttpWebRequestFactory:
public interface IHttpWebRequestFactory
{
IHttpWebRequest Create(string Uri);
}
HttpWebRequestFactory:
public class HttpWebRequestFactory : IHttpWebRequestFactory
{
public IHttpWebRequest Create(string Uri)
{
return new MyHttpWebRequest((HttpWebRequest)WebRequest.Create(Uri));
}
}
IWebResponse:
public interface IWebResponse
{
Stream GetResponseStream();
}
MyWebResponse:
public class MyWebResponse : IWebResponse
{
private WebResponse webResponse;
public MyWebResponse(HttpWebResponse webResponse)
{
this.webResponse = webResponse;
}
public Stream GetResponseStream()
{
return webResponse.GetResponseStream();
}
}
但是,該網站現在返回一個HTTP錯誤401未經授權。儘管使用Fiddler。我也嘗試設置request.Credentials = CredentialCache.DefaultNetworkCredentials
,request.PreAuthenticate = true
等,但無濟於事。 。:(
我也試圖提供給我的證書,但未經授權的錯誤仍然出現用戶名和密碼,這是因爲上述工程的原代碼奇:(
哇很多,非常感謝這個現在我意識到我的獲取/設置界面,而不是HttpWebRequest的財產的錯誤。 – okonomiyaki