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