2

Реализация HTTP-сервера на 1С 7.7/8.0/8.1/8.2

by 10. June 2009 12:43

Данная статья показывает, как можно организовать обработку HTTP-запросов на 1С, используя .Net framework. Пример показан на основе компонента Elisy .Net Bridge, который распространяется для разработчиков бесплатно.

.Net framework предлагает своим разработчикам класс HttpListener, отвечающий за прослушивание http-протокола. Используя HttpListener, вы можете создать прослушивание http-протокола, которое отвечает на http-запросы. Вы можете использовать этот класс только на операционных системах Windows XP SP2 или Windows Server 2003. Попытка использования класса на более ранних системах вызовет исключение.

Ниже приведен пример для 1С, который инициализирует объект типа HttpListener, настраивая его на прослушивание всех URL по порту 8080. При запуске в 1С работа программы приостанавливается, пока не последует запрос на порт, например, из браузера. Как только вы пошлете из браузера запрос, например, http://127.0.0.1:8080/ 1С вернет описанную в программе html-строку.

Это самый простой пример. При желании можно его усложнить, поставив обработку запросов в цикле, тем самым получив настоящий HTTP-сервер.

AttachAddIn("AddIn.ElisyNetBridge");
AddIn = New("AddIn.ElisyNetBridge");
net = AddIn.New("Elisy.NetBridge", "Elisy.ElisyNetBridge");

Если НЕ net.GetStatic("System.Net.HttpListener","IsSupported") Тогда
Сообщить("Для использования класса HttpListener нужна Windows XP SP2 или Server 2003.");
Возврат;
КонецЕсли;

listener = net.New("System.Net.HttpListener");
listener.Prefixes.Add("http://*:8080/");
listener.Start();

Сообщить("Прослушивание...");
//Метод GetContext блокирует пока ждет запрос.

context = listener.GetContext();
request = context.Request;
// Получить объект ответа
response = context.Response;
// Создать ответ - HTML-строку
responseString = "
<html><head><title>Ответ от HttpListener</title><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head><body>Посетите <a href="http://www.1centerprise.com">1centerprise.com</a></body></html>";
buffer = net.GetStatic("System.Text.Encoding", "UTF8").GetBytes(responseString);
// Получить поток ответа и записать ответ в него.
response.ContentLength64 = buffer.Length;
output = response.OutputStream;
output.Write(buffer,0,buffer.Length);
// Необходимо закрыть выходной поток.
output.Close();
listener.Stop();

Tags:

1C.Net

Comments

diver
diver
7/20/2009 10:31:00 AM #

Аналогичную задачу решил написание ActiveX для 1с, только изначально использовал TCPListner посему имел возможность отрабатывать и get и post, а так же аплоад даунлоад файлов ну и использовать https

| | | Delete
random
random
8/4/2009 9:57:21 AM #

Полезная информация для меня.

| | | Delete

Powered by BlogEngine.NET 1.6.0.0
Original Design by Laptop Geek, Adapted by onesoft

Wisata Semarang : News : Travelling : Used Stationary Bikes : Used Stationary Bikes : Used Stationary Bikes : Seo Services Company : Indonesia Furniture Handicraft Wholesale Marketplace : My Blogpost : My Blogpost : My Blogpost: Eiknujomorp : Google Ranking Master Gujarat : Wisata Dieng