HttpRequest PUT content in poco library

China☆狼群 提交于 2020-01-02 02:43:10

问题


I want to send some data from a C++ application to a server using a HTTP PUT request. I am using poco library for networking in my application.

I am using this code snippet:

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

Where do I set the content (file) stream when I send the request? Can anyone show me an example using this library?


回答1:


Quoting the online documentation for HTTPClientSession:

sendRequest() will return an output stream that can be used to send the request body. After you are done sending the request body, create a HTTPResponse object and pass it to receiveResponse().

The following snippet shows one way to use the output stream to read in a file:

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

Also, have a look at the slides for POCO Network programming. They show, among other things, how to use HTTPClientSession.

POCO documentation is terse and to the point; it is worthwhile to read it.



来源:https://stackoverflow.com/questions/10077126/httprequest-put-content-in-poco-library

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!