Я пытаюсь разработать простой RESTful api с помощью FastCGI (и restcgi). Когда я попытался реализовать метод POST, я заметил, что входной поток (представляющий тело запроса) ошибочен. Я сделал небольшой тест и выглядит, когда я пытаюсь прочитать поток, только каждый другой персонаж получен.Отсутствующие символы из потока ввода из запроса fastcgi
Тело отправлено: name=john&surname=smith
Поступила: aejh&unm=mt
Я пытался больше клиентов, просто чтобы убедиться, что это не клиент баловаться с данными. Мой код:
int main(int argc, char* argv[]) {
// FastCGI initialization.
FCGX_Init();
FCGX_Request request;
FCGX_InitRequest(&request, 0, 0);
while (FCGX_Accept_r(&request) >= 0) {
// FastCGI request setup.
fcgi_streambuf fisbuf(request.in);
std::istream is(&fisbuf);
fcgi_streambuf fosbuf(request.out);
std::ostream os(&fosbuf);
std::string str;
is >> str;
std::cerr << str; // this way I can see it in apache error log
// restcgi code here
}
return 0;
}
Я использую модуль fast_cgi с апача (не уверен, если это делает никакой разницы).
Любая идея, что я делаю неправильно?
Кажется, проблема с кодировкой каждый второй символ пропускается (16/8 бит) – stacker 2010-11-25 21:38:45
, но как? если бы он интерпретировал 2B как один символ, тогда char был бы чем-то другим, но он верен в моем случае ... – Tom 2010-11-28 09:12:14