Какие бывают POST запросы и от чего зависит их содержание? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Расскажите пожалуйста какие бывают POST запросы и от чего их содержание зависит. Ситуация :
 <FORM ACTION="https://test.paysecure.ru/bill/createbill.cfm" method="POST">
        <INPUT TYPE="hidden" NAME="Merchant_ID" VALUE="561889">
        <INPUT TYPE="hidden" NAME="Login" VALUE="VoltDeMar_sale">
        <INPUT TYPE="hidden" NAME="Password" VALUE="***">
        <INPUT TYPE="hidden" NAME="Bill" VALUE="tesx98765k4778">
        <INPUT TYPE="hidden" NAME="Bill_amount" VALUE="100.00">
        <INPUT TYPE="hidden" NAME="Bill_currency" VALUE="RUB">
        <INPUT TYPE="hidden" NAME="Bill_comment" VALUE="This is test">
        <INPUT TYPE="hidden" NAME="Customer_Name" VALUE="Pokupatel">
        <INPUT TYPE="hidden" NAME="Customer_Middleтame" VALUE="Pokupatelevich">
        <INPUT TYPE="hidden" NAME="Customer_Email" VALUE="removed@mail.ru">
        <INPUT TYPE="hidden" NAME="Customer_Phone" VALUE="89202705770">
        <INPUT TYPE="hidden" NAME="Customer_Mobile" VALUE="89202705770">
        <INPUT TYPE="hidden" NAME="Pay_until" VALUE="2016-07-21 01:00:00">
        <INPUT TYPE="hidden" NAME="Language" VALUE="RU">
        <INPUT TYPE="hidden" NAME="SendNotification" VALUE="1">        
        <INPUT TYPE="Submit" VALUE="OK"></FORM>
Запрос посланный нажатием на кнопку ОК из Хрома срабатывает на сервере и выглядит вот так:
Запрос в 13:01 по мск:
"INFO","ajp-apr-127.0.0.1-8009-exec-6","06/21/2016","10:01:53","","5C5E7BAD-BF65-4677-A20E1621347188AC: 109.111.12.136,21/06/2016 10:01:53,POST,test.paysecure.ru,80,,/bill/createbill.cfm?,Merchant_ID=561889;Bill_amount=100.00;Customer_Name=Pokupatel;password=***;fieldnames=Merchant_ID,Bill_amount,Customer_Name,Password,Login,SendNotification,Pay_until,Language,Customer_Mobile,Customer_Email,Bill_comment,Customer_Phone,Bill_currency,Customer_Middleтame,Bill;Login=VoltDeMar_sale;SendNotification=1;Pay_until=2016-07-21 01:00:00;Language=RU;Customer_Mobile=89202705770;Customer_Email=removed@mail.ru;Bill_comment=This is test;Customer_Phone=89202705770;Bill_currency=RUB;Customer_Middleтame=Pokupatelevich;Bill=tesx98765k4778,Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36,http://localhost:49642/SendReqPage.html,,$$$Merchant_ID=561889&Login=VoltDeMar_sale&password=***&Bill=tesx98765k4778&Bill_amount=100.00&Bill_currency=RUB&Bill_comment=This+is+test&Customer_Name=Pokupatel&Customer_Middle%D1%82ame=Pokupatelevich&Customer_Email=vladimir.kartashev98%40gmail.com&Customer_Phone=89202705770&Customer_Mobile=89202705770&Pay_until=2016-07-21+01%3A00%3A00&Language=RU&SendNotification=1$$$"
Запрос созданный таким методом в Standalone-приложении C# :
 BillData rd = new BillData();
 
            rd.Merchant_ID = textBox1.Text;
            rd.Login = textBox2.Text;
            rd.Password = textBox3.Text;
            rd.Bill = textBox4.Text; // Номер счета">
            rd.Bill_amount = textBox5.Text; // Сумма счета">
            rd.Bill_currency = textBox6.Text; //Валюта счета">
            rd.Bill_comment = textBox7.Text; //Комментарий к счету">
            rd.Customer_Name = textBox8.Text; //Имя плательщика">
            rd.Customer_Middlename = textBox9.Text; // Отчество плательщика">
            rd.Customer_Email = textBox10.Text; //Email плательщика">
            rd.Customer_Phone = textBox11.Text; //Телефон плательщика">
            rd.Customer_Mobile = textBox12.Text; //Моб. телефон плательщика">
            rd.Language = textBox13.Text; //Язык платежных страниц">
            rd.Pay_until = textBox14.Text; //Срок оплаты счета">
            rd.SendNotification = textBox15.Text; //Флаг отправки счета">
            rd.Checkvalue = textBox16.Text; //Контр
 
            string req = @"Merchant_ID=" + rd.Merchant_ID + @"
                        &Login='" + rd.Login + @"'
                        &Password='" + rd.Password+ @"'
                        &Bill='" + rd.Bill + @"'
                        &Bill_amount='" + rd.Bill_amount + @"'
                        &Bill_currency='" + rd.Bill_currency + @"'
                        &Bill_comment='" + rd.Bill_comment + @"'
                        &Customer_name='" + rd.Customer_Name + @"'
                        &Customer_middlename='" + rd.Customer_Middlename + @"'
                        &Customer_email='" + rd.Customer_Email + @"'
                        &Customer_phone='" + rd.Customer_Phone + @"'
                        &Customer_mobile='" + rd.Customer_Mobile + @"'
                        &Language='" + rd.Language + @"'
                        &Pay_until='" + rd.Pay_until + @"'
                        &Sendnotification='" + rd.SendNotification + "'";
 
            HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create("https://test.paysecure.ru/bill/createbill.cfm");
            UTF8Encoding encoding = new UTF8Encoding();
            hwr.ContentLength = encoding.GetByteCount(req);
 
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11;
            hwr.Method = "POST";
 
            using (Stream requestStream = hwr.GetRequestStream())
            {
                requestStream.Write(encoding.GetBytes(req), 0,
                    encoding.GetByteCount(req));
            }
 
            textBox19.Text = hwr.RequestUri.AbsoluteUri;
 
            try
            {
                HttpWebResponse response = hwr.GetResponse() as HttpWebResponse;
                string responseBody = "";
                using (Stream rspStm = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(rspStm))
                    {                       
                        responseBody = reader.ReadToEnd();
                        textBox18.Text = responseBody;
                    }
                }
            }
            catch (Exception exc)
            {
 
            }
Выдает ошибку и выглядит так:
Запрос в 13:03 по мск:
"INFO","ajp-apr-127.0.0.1-8009-exec-3","06/21/2016","10:03:12","","9DBF0A90-6A7D-4D02-A9D7B7006853C433: 109.111.12.136,21/06/2016 10:03:12,POST,test.paysecure.ru,80,,/bill/createbill.cfm?,,,,,$$$Merchant_ID=
561889&Login=VoltDeMar_sale&password=***&Bill=010604210316&Bill_amount=100.00&Bill_currency=RUB&
                        Bill_comment=This is test bill&Customer_name=Pokupatel&Customer_middlename=Pokupatelevich&
                        Customer_email=removed@mail.ru&Customer_phone=89202705770&
                        Customer_mobile=89202705770&Language=RU&Pay_until=2016-06-22T01:03:04&
                        Sendnotification=1&checkvalue=415D463E14CB41B7274647D321BB0BA7562AEC37020AEB16D7B287B86B0B4D8B;$$$"
Очевидно что второй существенно короче и слегка отличается по структуре. Как отослать при помощи C# такой как в первом варианте ? почему второй в такой форме?

Запросы с того конца высланы мне тех поддержкой сервера, чем они их считывают и как мне не известно.

Решение задачи: «Какие бывают POST запросы и от чего зависит их содержание?»

textual
Листинг программы
BillData rd = new BillData() {
    Merchant_ID = textBox1.Text,
    Login = textBox2.Text,
    Password = textBox3.Text,
    Bill = textBox4.Text, // Номер счета">
    Bill_amount = textBox5.Text, // Сумма счета">
    Bill_currency = textBox6.Text, //Валюта счета">
    Bill_comment = textBox7.Text, //Комментарий к счету">
    Customer_Name = textBox8.Text, //Имя плательщика">
    Customer_Middlename = textBox9.Text, // Отчество плательщика">
    Customer_Email = textBox10.Text, //Email плательщика">
    Customer_Phone = textBox11.Text, //Телефон плательщика">
    Customer_Mobile = textBox12.Text, //Моб. телефон плательщика">
    Language = textBox13.Text, //Язык платежных страниц">
    Pay_until = textBox14.Text, //Срок оплаты счета">
    SendNotification = textBox15.Text, //Флаг отправки счета">
    Checkvalue = textBox16.Text //Контр
};
 
Encoding reqEncoding = Encoding.UTF8;
string req = "";
req += "Merchant_ID="          + HttpUtility.UrlEncode(rd.Merchant_ID, reqEncoding);
req += "&Login="               + HttpUtility.UrlEncode(rd.Login, reqEncoding);
req += "&Password="            + HttpUtility.UrlEncode(rd.Password, reqEncoding);
req += "&Bill="                + HttpUtility.UrlEncode(rd.Bill, reqEncoding);
req += "&Bill_amount="         + HttpUtility.UrlEncode(rd.Bill_amount, reqEncoding);
req += "&Bill_currency="       + HttpUtility.UrlEncode(rd.Bill_currency, reqEncoding);
req += "&Bill_comment="        + HttpUtility.UrlEncode(rd.Bill_comment, reqEncoding);
req += "&Customer_name="       + HttpUtility.UrlEncode(rd.Customer_Name, reqEncoding);
req += "&Customer_middlename=" + HttpUtility.UrlEncode(rd.Customer_Middlename, reqEncoding);
req += "&Customer_email="      + HttpUtility.UrlEncode(rd.Customer_Email, reqEncoding);
req += "&Customer_phone="      + HttpUtility.UrlEncode(rd.Customer_Phone, reqEncoding);
req += "&Customer_mobile="     + HttpUtility.UrlEncode(rd.Customer_Mobile, reqEncoding);
req += "&Language="            + HttpUtility.UrlEncode(rd.Language, reqEncoding);
req += "&Pay_until="           + HttpUtility.UrlEncode(rd.Pay_until, reqEncoding);
req += "&Sendnotification="    + HttpUtility.UrlEncode(rd.SendNotification, reqEncoding);
 
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11;
HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create("https://test.paysecure.ru/bill/createbill.cfm");
hwr.Method = "POST";
using (Stream requestStream = hwr.GetRequestStream())
{
    byte[] postData = reqEncoding.GetBytes(req);
    requestStream.Write(postData, 0, postData.Length);
    
    hwr.ContentLength = postData.Length;
    hwr.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
}
 
// Далее без именений ...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5