I have a custom HTTP class for the service I am using. Eventually it will contain service specific requests in the form of methods. What I need to do is set the credentials of the proxy provided by the user, for example if the user has a proxy list.
Below is my code. I've commented the part I need to set credentials. I've looked at the iCredentials class on MSDN but I can't see how to set them from a string.
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();
}
}
}
I think this should work:
public RequestClass(String proxyURL, int port, String username, String password)
{
//Validate proxy address
var proxyURI = new Uri(string.Format("{0}:{1}", proxyURL, port));
//Set credentials
ICredentials credentials = new NetworkCredential(username, password);
//Set proxy
this.proxy = = new WebProxy(proxyURI, true, null, credentials );
}
I made a little modification
public System.Net.IWebProxy RequestClass(String proxyURL, int port, String username, String password)
{
//Validate proxy address
var proxyURI = new Uri(string.Format("{0}:{1}", proxyURL, port));
//Set credentials
ICredentials credentials = new NetworkCredential(username, password);
//Set proxy
return new WebProxy(proxyURI, true, null, credentials);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With