This code will send a web request via a proxy server and save it to a text file:
byte[] buf = new byte[8192];
int count = 0;
// send the http request
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com");
NetworkCredential cred = new NetworkCredential("username", "password", "DOMAIN");
request.Proxy.Credentials = cred;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
// create the new text file
FileInfo f = new FileInfo("C:TempTest.txt");
f.Delete();
StreamWriter sw = f.CreateText();
// read contents of stream into text file
while ((count = resStream.Read(buf, 0, buf.Length)) > 0) {
string s = Encoding.ASCII.GetString(buf, 0, count);
sw.Write(s);
}
// close streams
sw.Close();
resStream.Close();
response.Close();
Remote authorisation
If your request requires remote authorisation, all you need to do is add the network credentials to the request, for example:
request.Credentials = new NetworkCredential("username", "password");
Handling response codes
With the above method, anything other than a status of OK (200) will raise an error. If you want to check response codes, do the following:
HttpStatusCode statusCode;
HttpWebResponse response = null;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/default.asp");
response = (HttpWebResponse)request.GetResponse();
statusCode = response.StatusCode;
}
catch (WebException ex)
{
statusCode = ((HttpWebResponse)ex.Response).StatusCode;
}
finally
{
if (response != null) response.Close();
}
if (statusCode != HttpStatusCode.OK)
{
throw new Exception("Error!");
}