Відправлення запиту методом POST на сервер з. NET
програми h2>
Христофоров Юрій p>
Завдання: потрібно з Windows. NET програми відправити
POST запит на сервер і отримати результат роботи запитаного методом POST
скрипта. Передбачити ситуацію, при якій скрипт на сервер захищений Basic
авторизацією. p>
Нижче наведено приклад на C # для вирішення даного завдання. p>
C # код: p>
// необхідні бібліотеки p>
using System; p>
using System.Web; p>
using System.Collections; p>
using System.Text; p>
using System.IO; p>
using System.Net; p>
using System.Data; p>
// ...... p>
WebResponse result
= Null; p>
WebRequest req =
null; p>
Stream newStream =
null; p>
Stream
ReceiveStream = null; p>
StreamReader sr =
null; p>
try p>
( p>
// Url запитуваної методом POST скрипта p>
req =
WebRequest.Create ( "http://www.servername.com/script.cgi "); p>
req.Method = "POST"; p>
req.Timeout = 120000; p>
// ця
рядок необхідна тільки при захисті скрипта на сервері Basic авторизацією p>
// req.Credentials =
new NetworkCredential ( "login", "password "); p>
req.ContentType =
"application/x-www-form-urlencoded"; p>
byte []
SomeBytes = null; p>
// передаємо
список пар параметрів/значень для запитуваної скрипта методом POST p>
// в разі
декількох параметрів необхідно використовувати символ & для розділення
параметрів p>
// в даному
випадку використовується кодування windows-1251 для Url кодування спец. символів
значення параметрів p>
SomeBytes =
Encoding.GetEncoding (1251). GetBytes ( "ParamName1 =" +
HttpUtility.UrlEncode ( "ParamValue1", Encoding.GetEncoding (1251 ))); p>
req.ContentLength = SomeBytes.Length; p>
newStream = req.GetRequestStream (); p>
newStream.Write (SomeBytes, 0,
SomeBytes.Length); p>
newStream.Close (); p>
// зчитуємо результат роботи p>
result = req.GetResponse (); p>
ReceiveStream = result.GetResponseStream (); p>
Encoding encode = Encoding.GetEncoding (1251); p>
sr = new StreamReader (ReceiveStream, encode
); p>
Char [] read = new Char [256]; p>
int count = sr.Read (read, 0, 256); p>
string strOut = ""; p>
while (count> 0) p>
( p>
String str = new String (read, 0, count); p>
strOut
+ = Str; p>
count = sr.Read (read, 0, 256); p>
) p>
Console.WriteLine ( "Результат
роботи запитаного методом POST скрипта: "+ strOut); p>
) p>
catch (Exception
ex) p>
( p>
Console.WriteLine ( "Помилка:" + ex.Message); p>
) p>
finally p>
( p>
if (newStream! = null) p>
newStream.Close (); p>
if (ReceiveStream! = null) p>
ReceiveStream.Close (); p>
if (sr! = null) p>
sr.Close (); p>
if (result! = null) p>
result.Close (); p>
) p>
Список літератури h2>
Для підготовки даної роботи були використані
матеріали з сайту http://www.activex.net.ru/
p>