【问题标题】:incorrectly checks the response c#错误地检查响应 c#
【发布时间】:2012-11-04 22:29:50
【问题描述】:

我有一个从 POST 请求中获得响应的代码:

//Запрос авторизации бухаря
        WebRequest request = WebRequest.Create("http://clannr.org/scripts/login/auth.php");
        request.Method = "POST";
        string postData = "user=" + Login.Text + "&password=" + Password.Text + "&version=13";
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = byteArray.Length;
        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        WebResponse response = request.GetResponse();
        Console.WriteLine(((HttpWebResponse)response).StatusDescription);
        dataStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string responseFromServer = reader.ReadToEnd();
        reader.Close();
        dataStream.Close();
        response.Close();

但是在检查响应时:

        Match match = regex.Match(responseFromServer);

if (match.Success)
        {
            var input = responseFromServer;
            var split = input.Split(':');
            var final = split[3];
            ProcessStartInfo mcStartInfo = new ProcessStartInfo("javaw", "-Xms1024m -Xmx1024m -cp \"" + appData + "\\.ClanNR\\bin\\minecraft1.jar;" + appData + "\\.ClanNR\\bin\\jinput.jar;" + appData + "\\.ClanNR\\bin\\lwjgl.jar;" + appData + "\\.ClanNR\\bin\\lwjgl_util.jar \" -Djava.library.path=\"" + appData + "\\.ClanNR\\bin\\natives\" net.minecraft.client.Minecraft" + " " + username + " " + final + " " + server1);
            Process.Start(mcStartInfo);
            this.Close();



        }

        else if (responseFromServer == " Bad Login")
        {
            MessageBox.Show("Uncorrect login/password!");
        }
        else if (responseFromServer == " Old version")
        {
            MessageBox.Show("Launcher is old!");
        }

我的代码只调用了 2 个函数,即显示 2 个消息框

如何解决?

更新

【问题讨论】:

    标签: c# if-statement call messagebox


    【解决方案1】:

    因为如果responseFromServer 变量等于"Foo" 那么它同时满足这两个条件,因为它不等于" Bad Login" 也不等于" Old version"

    你可能想要的是else if:

        if (responseFromServer != " Bad Login")
        {
            MessageBox.Show("Uncorrect login/password!");
        }
        else if (responseFromServer != " Old version")
        {
            MessageBox.Show("Launcher is old!");
        }
    

    或者您可能想要== 而不是!=

    if (responseFromServer == " Bad Login")
    

    所以现在你的工作就是找出你真正想要实现的目标。

    PS:两个字符串的开头都是空格吗?

    【讨论】:

    • "PS:两个字符串开头的空格是有意的吗?"是的,我的回复有空格
    • @user1798736: На описание проблемы "не работает" есть только один возможный ответ - "ну так почини его"。 Что такое "не работает"?
    • @user1798736: ну т.е。 ты вообще наугад ставишь операторы и ожидаешь, что всё магически взлетит? Если не появляются - значит переменная не равна ни одному из строковых литералов。
    • @user1798736: метод "некогда пилу точить - надо лес валить" не работает, когда нет базовых знаний。 Так что открывай книжки, учи основы и потом возвращайся к практике。
    • 这有点新鲜,你知道的。 )
    【解决方案2】:

    首先,!= 运算符表示不相等。
    如果我错了,请纠正我,但我认为你想使用==

    if (responseFromServer == " Bad Login")
    {
        MessageBox.Show("Uncorrect login/password!");
    }
    
    else if (responseFromServer == " Old version")
    {
        MessageBox.Show("Launcher is old!");
    }
    

    其次,你应该使用 else if。如果第一个条件为真,则不会检查另一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 2012-11-06
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      相关资源
      最近更新 更多