IPConnection.HTTPSetOperation

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

Функция устанавливает операцию в заголовке запроса или ответа на запрос. Примеры операций для запросов: GET /questions/2262/question HTTP/1.0, PUT /questions/2262/update HTTP/1.1. Пример операции ответа на запрос: HTTP/1.1 200 OK. Операция всегда следует первой строкой в заголовке http пакета.

Синтаксис

IPConnection.HTTPSetOperation(<Операция (STRING)>)

Аргументы

  • <Операция (STRING)> - ANSI-строка с операцией без завершающего переноса строки.

Примеры

//Фрагмент получает 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;