Ich versuche, einfache RESTful API mit FastCGI (und Restcgi) zu entwickeln. Als ich versuchte, die POST-Methode zu implementieren, bemerkte ich, dass der Eingabestream (der den Anfragetext darstellt) falsch ist. Ich habe einen kleinen Test gemacht und sieht aus, als wenn ich versuche, den Stream zu lesen, nur jedes zweite Zeichen wird empfangen.Fehlende Zeichen aus dem Eingabestream von fastcgi Anfrage
Körper gesendet: name=john&surname=smith
empfangen: aejh&unm=mt
ich mehr Kunden versucht haben, nur um sicher zu machen, es ist nicht der Client mit den Daten durcheinander. Mein Code ist:
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;
}
Ich verwende fast_cgi Modul mit Apache (nicht sicher, ob das einen Unterschied macht).
Irgendeine Idee was mache ich falsch?
scheint ein Codierungsproblem zu sein, jedes zweite Zeichen wird übersprungen (16/8 Bit) – stacker
aber wie? Wenn es 2B als ein Zeichen interpretieren würde, wäre das Zeichen etwas anderes, aber in meinem Fall ist es korrekt ... – Tom