2012-04-09 6 views
7

Ich möchte einige Daten aus einer C++ - Anwendung mit einer HTTP-PUT-Anfrage an einen Server senden. Ich benutze poco Bibliothek für die Vernetzung in meiner Anwendung.HttpRequest PUT Inhalt in Poco-Bibliothek

ich diesen Code-Schnipsel bin mit:

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

Wo ich den Inhalt (Datei) Strom gesetzt, wenn ich die Anfrage schicken? Kann mir jemand ein Beispiel mit dieser Bibliothek zeigen?

Antwort

9

die online documentation für HTTPClientSession Zitiert:

sendrequest() einen Ausgabestrom zurück, der verwendet werden kann, die Anforderung Körper zu senden. Nachdem Sie den Anfragetext gesendet haben, erstellen Sie ein HTTPResponse-Objekt und übergeben es an receiveResponse().

Der folgende Ausschnitt zeigt eine Möglichkeit, den Ausgangsstrom zu verwenden, in einer Datei zu lesen:

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; 
} 

Auch hat einen Blick auf den slides for POCO Network programming. Sie zeigen unter anderem, wie man HTTPClientSession verwendet.

POCO Dokumentation ist kurz und auf den Punkt; es lohnt sich, es zu lesen.

+0

Ich habe das gleiche Problem mit einer Post-Anfrage. Mein Server erhält den Anfragekörper nicht, wenn ich versuche, ihn wie beschrieben zu senden. –