通常POCO有一個很大的優勢是非常簡單的,即使你對它一無所知,甚至喜歡自己需要提升你不需要中間/提前C++知識/ asio(例如,什麼意思enable_share_from_this ...)
在poco「安裝目錄」下,您可以找到示例目錄,在我們的示例中(poco \ poco-1.4.6p4 \ Net \ samples \ httpget \ src)。 在線幫助瀏覽也很容易和快速(瀏覽類......) 如果您目前對C++的理解不夠,請到大學圖書館借閱Scott Meyers的書籍(有效的C++和更有效的C++後)
所以我們適應示例代碼httpget.cpp到最小需求:
裏面的主
URI uri("http://pocoproject.org/images/front_banner.jpg");
std::string path(uri.getPathAndQuery());
if (path.empty()) path = "/";
HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest request(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
HTTPResponse response;
if (!doRequest(session, request, response))
{
std::cerr << "Invalid username or password" << std::endl;
return 1;
}
和功能幾乎不變:
bool doRequest(Poco::Net::HTTPClientSession& session, Poco::Net::HTTPRequest& request, Poco::Net::HTTPResponse& response)
{
session.sendRequest(request);
std::istream& rs = session.receiveResponse(response);
std::cout << response.getStatus() << " " << response.getReason() << std::endl;
if (response.getStatus() != Poco::Net::HTTPResponse::HTTP_UNAUTHORIZED)
{
std::ofstream ofs("Poco_banner.jpg",std::fstream::binary);
StreamCopier::copyStream(rs, ofs);
return true;
}
else
{
//it went wrong ?
return false;
}
}
我讓你爲你安排東西,看看圖像在你的磁盤上的位置。
希望它會幫助
來源
2014-09-24 21:27:48
NGI
幫助我很多,非常感謝! – orbatschow 2014-09-25 06:41:29