Архив за месяц: Апрель 2015

C#: программа проверки полисов ОМС

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;
             }            
         }
     }
 }