IPConnection.HTTPSend

From SunFlurry wiki
Jump to: navigation, search
  HTTPSend (Работа с HTTP)
Объект:Объект IP
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Разрыв соединения, системная ошибка
Визуальность:Нет

Функция выполняет отправку подготовленного http пакета (запроса или ответа на запрос) для установленного TCP соединения. Отсылаются и заголовок и тело http пакета. Если пакет не был отослан успешно, функция вызовет исключение.

Синтаксис

IPConnection.HTTPSend():<Удачное выполнение (INT)>

Возвращаемое значение

Возвращает 1, если пакет отослан успешно, иначе возвращает 0.

Примеры

//Фрагмент получает http пакет на сервере и отправляет ответ
Try
  If not TCP.HTTPReceiveHeader Then
    Exit;
  EndIf;
  Repeat
    аДлина:=Number(TCP.HTTPGetHeaderField("Content-Length"));
    тЗапрос:="";
    If (аДлина>0)And(аДлина<16384) Then
      тЗапрос:=TCP.ReceiveStrRaw(аДлина);
    EndIf;
    //?<пар>=<зн>&...
    СтрОп:=DecodeHTMLString(TCP.HTTPGetOperation);
    Message("req: "+СтрОп);
    TearStr(СтрОп,"?");
    СтрОп:=TearStr(СтрОп," ");
    СтрОп:="&"+СтрОп+"&";

    //Получаем и декодируем параметры из СтрОп
    ...

    //Создаем картинку-ответ в тОтвет
    ...
      
  Until 1;
    
  тОтвет:=тОтвет.SaveToString("png");
  аДата:=GMTDate();
  TCP.HTTPClear(3);
  TCP.HTTPSetOperation("HTTP/1.0 200 OK");
  TCP.HTTPSetHeaderField("Date",FormatDate(аДата,"N, DD M YYYY hh:tt:ss ""GMT""","en"));
  TCP.HTTPSetHeaderField("Server","SF http server");
  TCP.HTTPSetHeaderField("Last-Modified",FormatDate(аДата,"N, DD M YYYY hh:tt:ss ""GMT""","en"));
  TCP.HTTPSetHeaderField("Content-Length",Length(тОтвет));
  TCP.HTTPSetHeaderField("Cache-Control","no-store");
  TCP.HTTPSetHeaderField("Connection","close");
  TCP.HTTPSetHeaderField("Content-Type","image/png");
  TCP.HTTPSetBody(тОтвет);
  TCP.HTTPSend();
Finally
  Стр:=PopError();
  If not isEmpty(Стр) Then
    Message(Стр,"!");
  EndIf;
  SuppressException();
  TCP.Disconnect();
EndTry;