2012-04-09 11 views
7

Quiero enviar algunos datos de una aplicación C++ a un servidor utilizando una solicitud HTTP PUT. Estoy usando la biblioteca poco para redes en mi aplicación.HttpRequest PUT contenido en la biblioteca poco

estoy usando este fragmento de código:

HTTPClientSession session(_uri.getHost(), _uri.getPort()); 
HTTPRequest req(HTTPRequest::HTTP_PUT, path, HTTPMessage::HTTP_1_1); 

¿Dónde puse el contenido (archivo) corriente cuando envío la solicitud? ¿Alguien puede mostrarme un ejemplo usando esta biblioteca?

Respuesta

9

Citando la online documentation para HTTPClientSession:

sendRequest() devolverá una secuencia de salida que se puede utilizar para enviar el cuerpo de la solicitud. Una vez que haya terminado de enviar el cuerpo de la solicitud, cree un objeto HTTPResponse y páselo a receiveResponse().

El siguiente fragmento de código muestra una forma de utilizar el flujo de salida para leer en un archivo:

try { 
    Poco::Net::HTTPClientSession session("www.example.com"); 
    Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_PUT, "/foo"); 

    std::ostream& os = session.sendRequest(request); 

    std::ifstream ifs("thefile.txt"); // missing: error handling 
    Poco::StreamCopier::copyStream(ifs, os); // that's it :-) 

    Poco::Net::HTTPResponse response; 
    std::istream& rs = session.receiveResponse(response); 
    // Do something with rs... 

} catch (Poco::Exception& e) { 
    std::cout << e.displayText() << std::endl; 
} 

También, echar un vistazo a la slides for POCO Network programming. Muestran, entre otras cosas, cómo usar HTTPClientSession.

La documentación de POCO es escueta y al grano; vale la pena leerlo.

+0

Tengo el mismo problema con una solicitud posterior. Mi servidor no recibe el cuerpo de la solicitud cuando intento enviarlo como usted describió. –

Cuestiones relacionadas