2012-11-02 62 views
0

我試圖將一個基於命令行的HTTP post發佈到網頁,其中此命令行可以登錄和檢索某些數據或執行其他操作。我擁有所有的代碼,但它不喜歡靜態字段Main中的非靜態事物,我該如何解決這個問題?由於保護級別而無法訪問C#命令行

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);      
     } 
    }  

是我的代碼從一個類。

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

給我錯誤。

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; 
    } 

我可以公開它,它給了我錯誤。

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 

回答

1

DoPost()cookies字段是實例成員。
您需要該類的一個實例來調用它們。

你可能想讓它們變成靜態的。

+0

如何讓它們變爲靜態?我可以做公共靜態字符串DoPost,但如何爲cookie? – Illuminati

相關問題