gpt4 book ai didi

使用 POCO 的 C++ Http 请求

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:59 26 4
gpt4 key购买 nike

我想知道如何在 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 下)。

在线帮助浏览也很方便快捷(例如浏览类(class))。

如果你目前对 C++ 的理解不够,请去大学图书馆借 Scott Meyers 的书(Effective C++ 和之后的 More effective 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;
}
}

我让你为你安排事情,看看图像在你磁盘上的位置。

希望对你有帮助

关于使用 POCO 的 C++ Http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26021536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com