Mam niestandardową klasę HTTP dla usługi, z której korzystam. Ostatecznie będzie zawierał prośby o usługi w postaci metod. Muszę ustawić poświadczenia proxy dostarczone przez użytkownika, na przykład, jeśli użytkownik ma listę proxy.Przekazywanie referencji do WebProxy?
Poniżej znajduje się mój kod. Skomentowałem część, której potrzebuję do ustawienia poświadczeń. Spojrzałem na klasę iCredentials na MSDN, ale nie mogę zobaczyć, jak ustawić je z ciągu.
class RequestClass
{
private CookieContainer cookieJar;
private WebProxy proxy = null;
public RequestClass()
{
this.cookieJar = new CookieContainer();
}
public RequestClass(String proxyURL, int port)
{
this.proxy = new WebProxy(proxyURL, port);
}
public RequestClass(String proxyURL, int port, String username, String password)
{
this.proxy = new WebProxy(proxyURL, port);
// Need to set them here
}
// HTTP Get Request
public HttpWebResponse getRequest(String url, NameValueCollection headers)
{
HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create(url);
getRequest.Method = "GET";
getRequest.CookieContainer = cookieJar;
foreach (String key in headers.Keys)
{
getRequest.Headers.Add(key, headers[key]);
}
return (HttpWebResponse)getRequest.GetResponse();
}
// HTTP Post Request
public HttpWebResponse postRequest(String url, String postData, NameValueCollection headers)
{
byte[] postBytes = Encoding.ASCII.GetBytes(postData);
HttpWebRequest postRequest = (HttpWebRequest)WebRequest.Create(url);
postRequest.Method = "POST";
postRequest.CookieContainer = cookieJar;
postRequest.ContentLength = postBytes.Length;
postRequest.ProtocolVersion = HttpVersion.Version10;
foreach(String key in headers.Keys)
{
postRequest.Headers.Add(key, headers[key]);
}
Stream postRequestStream = postRequest.GetRequestStream();
postRequestStream.Write(postBytes, 0, postBytes.Length);
postRequestStream.Close();
return (HttpWebResponse)postRequest.GetResponse();
}
}
}
Czytałem o NetworkCredential zanim odświeżane na odpowiedź. Myślę, że masz rację, to sposób na zrobienie tego. Dam test. –