/**
* Obtiene los datos del pedido HTTP desde un texto.
*/
- friend std::istream& operator>>(std::istream& is, HTTPMessage& m);
+ friend std::istream& operator>>(std::istream& is, HTTPMessage& m)
+ throw(HTTPError, sockerr, ios::failure);
/**
* Convierte el pedido HTTP en texto.
return body;
}
-istream& operator>>(istream& is, HTTPMessage& m) {
+istream& operator>>(istream& is, HTTPMessage& m)
+ throw(HTTPError, sockerr, ios::failure) {
#ifdef DEBUG
cerr << __FILE__ << "(" << __LINE__ << ")"
<< ": operator>>()" << endl;
streamsize size, readed;
to(m.headers["Content-Length"], size);
char* const buf2 = new char[size+1];
- if ((readed = is.readsome(buf2, size)) == size) {
+ is.read(buf2, size);
+ if (is.gcount() == size) {
// Agrego fin de string porque el readsome no lo hace.
buf2[size] = '\0';
m.set_body(buf2);
#ifdef DEBUG
cerr << __FILE__ << "(" << __LINE__ << ")"
<< ": operator>>() ERROR: No se pudo leer el mensaje completo. Se leyeron sóolo "
- << readed << " bytes de " << size << " que deberían haberse leído." << endl;
+ << is.gcount() << " bytes de " << size << " que deberían haberse leído." << endl;
#endif // DEBUG
}
delete []buf2;