簡體   English   中英

帶POCO的C ++ Http請求

[英]C++ Http Request with POCO

我想知道如何用C ++中的POCO對URL進行請求(例如下載圖片並保存)?

到目前為止,我得到了這個小代碼

#include <iostream>
#include <string>
#include "multiplication.h"
#include <vector>
#include <HTTPRequest.h>
using std::cout;
using std::cin;
using std::getline;

using namespace Poco;
using namespace Net;

int main() {
    HTTPRequest *test = new HTTPRequest("HTTP_GET", "http://www.example.com", "HTTP/1.1");
}

通常POCO有一個非常簡單的優點,即使你對它一無所知,你也不需要像boost / asio那樣的中/高級C ++知識(例如,什么意思是enable_share_from_this ......)

在poco“安裝目錄”下,您可以找到示例目錄(在我的情況下,在poco\\poco-1.4.6p4\\Net\\samples\\httpget\\src )。

在線幫助瀏覽也很簡單快捷(例如瀏覽課程)。

如果您目前對C ++的理解還不夠,那就去大學圖書館並借閱Scott Meyers的書籍(Effective 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;
    }
}

我讓你為你安排一些事情,看看你的磁盤放在哪里。

希望它會有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM