2015-04-07 CheckPolis.exe — консольная прогамма для проверки полисов обязательного медицинского страхования через интернет. Запускается через командную строку так:
CheckPolis.exe XXXXxxxxXXXXxxxx XX.XX.XXXX
Результат выдаёт через stdout и как код возврата приложения
Возможные результаты:
* 0 — аргументы не заданы
* 1 — полис существует
* 2 — полис не существует
* 3 — ответ не распознан
Написано за 4 часа. Некоторые события пока не обработаны. Исходный код:
/* * Created by SharpDevelop. * http://kmsvsr.ru * Date: 07.04.2015 * Time: 17:47 * */ /* args: * [0] - номер полиса * [1] - дата рождения * * ответ программы: * 0 - аргументы не заданы * 1 - полис существует * 2 - полис не существует * 3 - ответ не распознан * 4 - ответ не получен * 5 - неведома ху... */ using System; using System.Net; using System.IO; using System.Text; namespace CheckPolis { class Program { private static string POST(string Url, string Data) {// спасибо за функцию http://programmerinfo.ru/post_get/ WebRequest req = WebRequest.Create(Url); req.Method = "POST"; req.Timeout = 100000; req.ContentType = "application/x-www-form-urlencoded"; byte[] sentData = Encoding.GetEncoding(1251).GetBytes(Data); req.ContentLength = sentData.Length; Stream sendStream = req.GetRequestStream(); sendStream.Write(sentData, 0, sentData.Length); sendStream.Close(); WebResponse res = req.GetResponse(); Stream ReceiveStream = res.GetResponseStream(); StreamReader sr = new StreamReader(ReceiveStream, Encoding.UTF8); //Кодировка указывается в зависимости от кодировки ответа сервера Char[] read = new Char[256]; int count = sr.Read(read, 0, 256); string Out = String.Empty; while (count > 0) { String str = new String(read, 0, count); Out += str; count = sr.Read(read, 0, 256); } return Out; } public static int Main(string[] args) { if(args.Length > 1){ //если аргументов хотя бы два //переменная в запрос с номером полиса //ХХХХххххХХХХхххх //переменная в запрос с датой рождения //ХХ.ХХ.ХХХХ string Data="polis=" + args[0] + "&birthday=" + args[1]; //адрес страницы проверки полисов string tfomsurl = "http://www.tfoms.e-burg.ru/citizens/check-the-relevance-of-the-policy/?type=special"; //сюда получим страницу с ответом string responseFromServer = ""; responseFromServer = POST( tfomsurl, Data); if(responseFromServer.Contains("<table class=\"wd-main data-table\">")){//если полис существует Console.Write("1"); return 1; }else if(responseFromServer.Contains("<h3 style=\"color: red\">")){//если полис не существует Console.Write("2"); return 2; }else{//если ответ непонятный Console.Write("3"); return 3; } } else { //справка по программе Console.Write("0\nHelp:\nCheckPolis.exe XXXXxxxxXXXXxxxx XX.XX.XXXX"); Console.Write("\nhttp://kmsvsr.ru"); Console.Write("\nPress any key to continue . . . "); Console.ReadKey(true); return 0; } } } }