Question

I am trying to make a command line based HTTP post to a webpage, where this command line can login and retrieve some data or do other things. I have all the code in place but it does not like non-static things in the static field Main, how do I fix this?

 static void Main(string[] args)
    {
        System.Console.Title = "Test Project";
        bool GoodUsername = false;
        string Username = "";
        while (GoodUsername == false)
        {
            Console.WriteLine("Please enter your username.");
             Username = Console.ReadLine();
            Console.WriteLine("Is " + Username + " correct? Type Yes or No");
            string YesNo = Console.ReadLine();
            if (YesNo == "yes" || YesNo == "Yes" || YesNo == "y")
            {
                GoodUsername = true;
                //return;
            }      
        }
        bool GoodPassword = false;
        string Password = "";           
        while (GoodPassword == false)
        {
            Console.WriteLine("Please enter your password.");
            Password = Console.ReadLine();
            Console.WriteLine("Attempting to log in.");
               string PostURL = "username=" + Username + "&password=" + Password + "&login=Login";
              string URLs = "http://c-rpg.net/index.php?page=login";
             string Response = CRPG.CRPG.DoPost(URLs, PostURL);                       
        }
    }       

Is my Code from one Class.

 string Response = CRPG.CRPG.DoPost(URLs, PostURL);             

Gives me the error.

 CookieContainer cookies = new CookieContainer();
    protected string DoPost(string URLr, string POST)
    {
        Uri url = new Uri(URLr);
        HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(url);

        HttpWRequest.Headers.Set("Pragma", "no-cache");
        HttpWRequest.Timeout = 5000;
        HttpWRequest.Method = "POST";
        HttpWRequest.ContentType = "application/x-www-form-urlencoded";
        HttpWRequest.CookieContainer = cookies;

        byte[] PostData = System.Text.Encoding.ASCII.GetBytes(POST);
        HttpWRequest.ContentLength = PostData.Length;
        Stream tempStream = HttpWRequest.GetRequestStream();
        tempStream.Write(PostData, 0, PostData.Length);
        tempStream.Close();

        HttpWebResponse HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();
        Stream receiveStream = HttpWResponse.GetResponseStream();
        StreamReader readStream = new StreamReader(receiveStream);

        string rcstr = "";
        Char[] read = new Char[256];
        int count = 0;
        while ((count = readStream.Read(read, 0, 256)) > 0)
        {
            rcstr += new String(read, 0, count);
        }
        HttpWResponse.Close();
        readStream.Close();
        return rcstr;
    }

I can make it public and it gives me the error.

Error   1   An object reference is required for the non-static field, method, or property 'CRPG.CRPG.DoPost(string, string)'    c:\users\sales\documents\visual studio 2010\Projects\Test_CL\Test_CL\Program.cs 40
Was it helpful?

Solution

DoPost() and the cookies field are instance members.
You need an instance of that class to call them on.

You probably want to make them static instead.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top