static void Main(string[] args)
    {
        string uriString = "http://www.remotesite.com/login.cfm";
        // Create a new WebClient instance.
        WebClientX myWebClient = new WebClientX();
        // Create a new NameValueCollection instance to hold some custom parameters to be posted to the URL.
        NameValueCollection myNameValueCollection = new NameValueCollection();

        // Add necessary parameter/value pairs to the name/value container.
        myNameValueCollection.Add("userid", "myname");
        myNameValueCollection.Add("mypassword", "mypassword");
        Console.WriteLine("\nUploading to {0} ...", uriString);
        // 'The Upload(String,NameValueCollection)' implicitly method sets HTTP POST as the request method.
        byte[] responseArray = myWebClient.UploadValues(uriString, myNameValueCollection);
        // Decode and display the response.
        Console.WriteLine("\nResponse received was :\n{0}", Encoding.ASCII.GetString(responseArray));
        Console.WriteLine("\n\n\n pausing...");
        Console.ReadKey();
        // Go to 2nd page on the site to get additional data
        Stream myStream = myWebClient.OpenRead("https://www.remotesite.com/status_results.cfm?t=8&prog=d");

        Console.WriteLine("\nDisplaying Data :\n");
        StreamReader  sr = new StreamReader(myStream);
        StringBuilder sb = new StringBuilder();

        using (StreamReader reader = new StreamReader(myStream, System.Text.Encoding.UTF8))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                sb.Append(line + "\r\n");
            }
        }
        using (StreamWriter outfile = new StreamWriter(@"Logfile1.txt"))
        {
            outfile.Write(sb.ToString());
        }
        Console.WriteLine(sb.ToString());
        Console.WriteLine("\n\n\n pausing...");
        Console.ReadKey();
    }