Официальный сайт студ.городка НГТУ
Программирование и БД » [C++/CGI] Как прочитать POSTDATA? 

#1  27.10.07 01:17

[C++/CGI] Как прочитать POSTDATA?

Как можно получить информацию, передаваемую сервером методом POST программе на C++.
Просто хочу изучить что-нибудь новенькое, поэтому, пожалуйста, не надо писать "а зачем тебе на C++, что же там такого, что нельзя сделать на Perl/PHP/ASP?" и т.п. и т.д.

Offline

#2  27.10.07 02:32

Re: [C++/CGI] Как прочитать POSTDATA?

Ты понял, что спросил?
Сервер не передает информацию методом "POST" :)
POST'ом клиент передает данные http-серверу.
Получить можно разными способами. Например, перехватом функций из winsock.

Offline

#3  27.10.07 05:34

Re: [C++/CGI] Как прочитать POSTDATA?

zombie, это ты не понял, что я спросил, а я-то прекрасно это понял!
Я здесь спрашиваю не о том как клиент передаёт по протоколу HTTP запросы серверу, и не о том как все это происходит на уровне сетевых протоколов, а о том как взаимодействуют две программы на одном и том же компьютере - на сервере. Одна из этих программ: HTTP-сервер, а другая CGI-программа.

Для общего развития из http://ru.wikipedia.org/wiki/CGI:

CGI (от англ. Common Gateway Interface — «общий интерфейс шлюза») — стандарт интерфейса, служащего для связи внешней программы с веб-сервером. Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято называть шлюзом, хотя многие предпочитают названия скрипт (сценарий) или CGI-программа.

Сам интерфейс разработан таким образом, чтобы можно было использовать любой язык программирования, который может работать со стандартными устройствами ввода/вывода. Такими возможностями обладают даже скрипты для встроенных командных интерпретаторов операционных систем, поэтому в тех случаях, когда нет нужды в сложной функциональности, могут использоваться даже такие простые командные скрипты.

А теперь, внимание, вопрос, дубль два: клиент передаёт серверу запрос методом POST. Сервер, для обработки этого запроса запускает мою программу, написанную на языке C++. Как из своей программы я могу получить ту информацию, которая передана методом POST в теле запроса?

p.s. В теме же вроде бы написал, что CGI имеется ввиду... хотя может быть не совсем корректно в первый раз сформулировал в чем проблема.

Исправлено AntiGen (27.10.07 05:41)

Offline

#4  27.10.07 07:43

Re: [C++/CGI] Как прочитать POSTDATA?

ситай данные из stdin
сколько их пришло сказанно в переменной окружения CONTENT_LENGTH, до eof вычитывать нельзя

Offline

#5  27.10.07 07:59

juf
Профиль

Re: [C++/CGI] Как прочитать POSTDATA?

Код: c:

int content_length;
char *input;
 
char *RM=getenv("REQUEST_METHOD");
if(RM==NULL){
      exit(1);
}
if(!strcmp(RM,"GET")){
input=getenv("QUERY_STRING");
          if(input==NULL)     
              exit(1);
          else
               content_length = strlen(input);
     }
     else if(!strcmp(RM,"POST")){
          content_length = atoi(getenv("CONTENT_LENGTH"));
          input = (char*)malloc(sizeof(char) * content_length + 1);
          if (fread(input,sizeof(char),content_length,stdin) != content_length)
              exit(1);
     }


Что-то типа этого.

Исправлено juf (27.10.07 08:01)

Offline

#6  28.10.07 01:03

Re: [C++/CGI] Как прочитать POSTDATA?

Matrim, juf спасибо!

Offline

Программирование и БД » [C++/CGI] Как прочитать POSTDATA? 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.083 сек.
Выполнено 11 запросов.