0

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つの関数、つまりshow2MessageBoxを呼び出しました

それを修正する方法は?

更新しました

4

2 に答える 2

2

たとえば、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:両方の文字列の先頭のスペースは意図されていますか?

于 2012-11-04T22:33:31.577 に答える
1

まず、!=演算子は等しくないことを意味します。
私が間違っている場合は私を訂正してください、しかし私はあなたが使いたかったと思います==

if (responseFromServer == " Bad Login")
{
    MessageBox.Show("Uncorrect login/password!");
}

else if (responseFromServer == " Old version")
{
    MessageBox.Show("Launcher is old!");
}

次に、elseifを使用する必要があります。最初の条件が真の場合、他の条件はチェックされません。

于 2012-11-04T22:35:43.097 に答える