Poco库中的HttpRequest PUT内容

时间:2012-04-09 17:28:57

标签: http networking stream poco-libraries

我想使用HTTP PUT请求将一些数据从C ++应用程序发送到服务器。我在我的应用程序中使用poco库进行联网。

我正在使用此代码段:

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

发送请求时,我在哪里设置内容(文件)流?有人能告诉我一个使用这个库的例子吗?

1 个答案:

答案 0 :(得分:8)

引用HTTPClientSession的{​​{3}}:

sendRequest()将返回可用于发送请求正文的输出流。完成发送请求主体后,创建一个HTTPResponse对象并将其传递给receiveResponse()。

以下代码段显示了一种使用输出流读取文件的方法:

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

另外,请查看online documentation。除其他事项外,它们还显示了如何使用HTTPClientSession

POCO文档简洁明了;值得一读。