Технология разработки web-приложений, страница 17

/* program GetPostTest */

#include <Windows.hpp>

int ContentLength, i;

char St1[50],               //Название метода

     St2[200];              //Строка параметров

char c;

void main(void)

{

// Получаем название метода

GetEnvironmentVariable("REQUEST_METHOD",St1,50);

// Устанавливаем для символов верхний регистр

i = strlen(St1);

while (i>0)

{

   St1[i-1] = UpCase(St1[i-1]);

   i--;

}

// Анализируем метод передачи данных

if (strcmp(St1,"GET") == 0)

{

   // Получаем строку параметров

   GetEnvironmentVariable("QUERY_STRING",St2,200);

}

if (strcmp(St1,"POST") == 0)

{

   // Получаем длину строки параметров

   GetEnvironmentVariable("CONTENT_LENGTH",St2,50);

   // Преобразуем строку в число

   ContentLength = atoi(St2);

   // Считываем символы из стандартного потока ввода

   for (i=0; i<ContentLength; i++)

   {

       scanf("%c",C);

       St2[i] = C; St2[i+1] = 0;

   }

}

// Формируем поле заголовка Content-Type

puts("Content-Type: text/html");

// Формируем пустую строку,отделяющую

// заголовок от тела ответа

puts("");

// Построчно формируем HTML-документ

puts("<HTML>");

puts("<HEAD>");

puts("<TITLE>Пример №3. Передача и прием данных</TITLE>");

puts("</HEAD>");

puts("<BODY>");

puts("<H2 ALIGN=CENTER>CGI-приложение принимает параметры</H2>");

printf("<H2 ALIGN=CENTER>Method %s</H2>\n", St1);

printf("<H2 ALIGN=CENTER>Строка параметров: %s</H2>\n", St2);

puts("</BODY>");

puts("</HTML>");

}

Откомпилируем приложение и скопируем файл GetPostTest.cgi на устройство W.

Для проверки работоспособности приведенного приложения воспользуемся HTML-документом JStest.html и дополним его описанием еще одной формы c двумя элементами управления - полем ввода и кнопкой, расположив описание этой формы перед тегом </BODY>: