2015-10-07 35 views
-1

我想登录到我和我的控制台应用程序MyBB的论坛,但我得到一个错误与我的代码为“POSTDATA默认参数值必须是一个编译时常

默认参数值'必须是编译时常量

如果我将用户名和密码设置为常量字符串,但我无法使用Console.ReadLine();所以我将不得不硬编码的用户名和密码,我不认为这是一个好主意。

这是我的代码:

 public string Username = Console.ReadLine(); 
    public string Password = Console.ReadLine(); 
    public const string ForumUrl = "forum.smurfbot.net"; 

    static void Main(string[] args) 
    { 

    } 

    public string MakePostRequest(string url = "www.website.com/usercp.php", string postData = "username=" + Username + "&password=" + Password + "&remember=yes&submit=Login&action=do_login&url=" + ForumUrl + "member.php?action=login") 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
     request.KeepAlive = true; 
     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded"; 
     request.AllowAutoRedirect = true; 

     byte[] postBytes = Encoding.ASCII.GetBytes(postData); 
     request.ContentLength = postBytes.Length; 
     Stream requestStream = request.GetRequestStream(); 
     requestStream.Write(postBytes, 0, postBytes.Length); 
     requestStream.Close(); 

     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     StreamReader sr = new StreamReader(response.GetResponseStream()); 
     string sReturn = sr.ReadToEnd(); 
     sr.Dispose(); 

     return sReturn; 
    } 

回答

1

为什么为它设置一个默认值摆在首位?这不是功能如何工作!

使用单独的参数并在函数中执行字符串连接。

public string MakePostRequest(string url, string Username, string Password, string ForumUrl) 
{ 
    string postData = "username=" + Username + "&password=" + Password + "&remember=yes&submit=Login&action=do_login&url=" + ForumUrl + "member.php?action=login" 
    ... 
} 

对于一个名称为通用的“MakePostRequest”的方法有一个默认的URL或默认POST数据听起来很奇怪。

说实话,我希望它只接受POST数据的URL和映射,然后由调用者为该请求传递适当的数据。

0

C#确实允许比常数设置默认的,所以你不能使用域/其他参数。对于url可以,因为这是一个常数值。 postData的连接字符串是不允许的。

一个选项是将默认设置为null,并在您的方法中检查它。这是允许

public string MakePostRequest(string url = "www.website.com/usercp.php", string postData = null) 
{ 
    if (string.IsNullOrEmpty(postData)) 
    { 
     postData = "username=" + Username + "&password=" + Password + "&remember=yes&submit=Login&action=do_login&url=" + ForumUrl + "member.php?action=login"; 
    } 
相关问题