【发布时间】:2010-11-25 21:31:42
【问题描述】:
我正在尝试使用 FastCGI(和 restcgi)开发简单的 RESTful api。当我尝试实现 POST 方法时,我注意到输入流(代表请求正文)是错误的。我做了一个小测试,看起来当我尝试读取流时只接收到其他每个字符。
正文发送: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;
}
我在 apache 中使用 fast_cgi 模块(不确定这是否有什么不同)。
知道我做错了什么吗?
【问题讨论】:
-
似乎是每跳过一个字符(16/8 位)的编码问题
-
但是怎么做呢?如果它将 2B 解释为一个字符,那么字符将是别的东西,但在我的情况下它是正确的......