错误地检查响应c#
我有一个代码从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个函数,即show 2 MessageBox
怎么解决?
更新
因为,如果,例如, 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:两个字符串的开头是空格吗?
首先, !=
运算符意味着不相等。
如果我错了,请纠正我,但我认为你想使用==
。
if (responseFromServer == " Bad Login") { MessageBox.Show("Uncorrect login/password!"); } else if (responseFromServer == " Old version") { MessageBox.Show("Launcher is old!"); }
其次,你应该使用else if。 如果第一个条件为真,那么它将不会检查另一个条件。