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