Христофоров Юрий
Задача: требуется из 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();
Похожие работы
... через Интернет с помощью банковской карточки). Если раньше угрозой номер один считались компьютерные вирусы, и именно им было посвящено подавляющее большинство статей в средствах массовой информации, то теперь на первый план выходят безопасное хранение данных и их передача по Сети, защищенные финансовые транcакции и конфиденциальность электронно-цифровой подписи (ЭЦП). Кроме того, наряду с этой ...
... дешевле чем ОС Unix, как правило просты в использовании и предоставляют доступ почти ко всем ресурсам сети Internet. Абонентское программное обеспечение весьма разнообразно. Его выпускают фирмы-производители сетевого программного обеспечения, а также организации, занимающиеся исследованиями в области глобальных сетей. Именно ввиду большого числа таких пакетов и важности абонентского программного ...
... от необходимости самим создавать соответствующие программы. Присутствует в ASP и PHP, отсутствует в XML. Создание серверных сценариев. Основа любого языка для создания динамических сайтов. Присутствует в ASP и PHP, отсутствует в XML. Описание данных. Важная функция, позволяющая представлять данные в едином формате, единым способом записи. Отсутствует в ASP и PHP, присутствует в XML. Наличие ...
... в помещении представлена на рисунке 4.1 Рисунок 4.1 - Схема размещения светильников в аудитории № 209. Заключение В работе проведено исследование использования программ дистанционного обучения для подготовки учебно-методической документации, описаны их положительные стороны и выявлены основные проблемы. В результате проведенного исследования разработано web-приложение "R@Learning ...
0 комментариев