Реализация 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 (1) -

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

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

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading

Richmedia.us

Добро пожаловать на сайт Richmedia.us

1 2 3 4 5 6 7 8

RecentPosts

RecentComments

Comment RSS