Каждый день задается очень много вопросов по поводу того, как например достать число убийств боссов, количество папирос и тому подобное, так вот все очень просто Пишем процедуру я назвал ее parse:
string res; private string parse(string text, string ind1, string ind2) { res = "";//зануляем string[] stringSeparators = new string[] { "\n" }; string[] result = text.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries); foreach (string stroka in result) {if (stroka.IndexOf(ind1) != -1) {string[] Moneyy = stroka.ToString().Split((Convert.ToChar(">"))); res = Moneyy[1].Replace(ind2, ""); } } return res; }
где text - это текст который надо распарсить,ind1,ind2-место откуда начать/где закончить
далее отправляем запрос:
Счелкаем 2 раза по кнопке и вставляем туда код:
String s1 = "key=" + textBox2.Text + "&user=" + textBox1.Text + "&method=getInfo"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://109.234.155.198/prison/universal.php?getInfo"); request.UserAgent = "Opera/9.80"; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; byte[] EncodedPostParams = Encoding.ASCII.GetBytes(s1); request.ContentLength = EncodedPostParams.Length; request.GetRequestStream().Write(EncodedPostParams, 0, EncodedPostParams.Length); request.GetRequestStream().Close(); // Получаем ответ HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //Получаем html-код страницы string html= new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd(); //После чего с помощью процедуры parse можем достать из запроса абсолютно любое значение: label1.Text = "Энергия: " + parse(html, "<energy>", "</energy"); label2.Text = "Папиросы: " + parse(html, "<money>", "</money"); label3.Text = "Борода: " + parse(html, "<beard>", "</beard");
Сразу встает вопрос а как же вытащить боссов ведь там же одинаковые переменные??? Существует много способов, но я скажу о самом простом:
итак после того как вытащили все что нужно делаем следующее:
int k=html.IndexOf("<bossId>2</bossId>"); string boss1=html.Remove(0,k); /*выше описанным методом пользуемся и достаем победы второго босса но используя text не html а boss1*/ label4.Text = "Сизый: " + parse(boss1, "<winCount>", "</winCount");
добавляем так же неймспейсы:
using System.IO;
using System.Net;
Вот в принципе и все!