Каждый день задается очень много вопросов по поводу того, как например достать число убийств боссов, количество папирос и тому подобное, так вот все очень просто Пишем процедуру я назвал ее 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;
Вот в принципе и все!