带有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++知识,POCO也有一个非常简单的优势(例如,什么意思是enable_share_from_this…)
在poco下;安装目录";您可以找到示例目录(在我的案例中,位于pocopoco-1.4.6p4Netsampleshttpgetsrc
下)。
在线帮助浏览也很简单快捷(例如浏览课程)。
如果你目前对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;
}
}
我让你为你安排一些事情,看看图像在你的磁盘上的位置。
希望它能帮助
相关文章:
- 如何在boost beast http请求中设置http头
- 在多个核心中处理一个HTTP请求
- 使用 Winsock2.h C++向不和谐 API 发送 HTTP 请求时出现问题
- 使用 winsock 接收 http 请求
- 对于 http 请求,python 比 c++ 快吗?
- 如何使用C++和Boost Asio从HTTP发布请求中获取键值
- 如何使用boost/beast从HTTP POST请求中解析和提取有效负载?
- 在 C++/C 中使用 CURL 发出带有数据文件的 GET HTTP 请求
- 带有C++的 HTTP 请求
- C++:如何通过 curl 调用使用 HTTP post 请求发送二进制数据(protobuf 数据)
- c++程序,在windows下发送带有参数的http get请求
- HTTP POST 请求不允许我定义上下文类型
- 如何在QT中同步发送http请求
- 节点.js HTTP 无法通过套接字接收来自C++客户端的请求
- C++HTTP客户端在GET请求后挂起read()调用
- 我可以使用 Boost.Asio 和 Boost.Beast 库发出 HTTPS 请求或 HTTP/2 请求吗?
- HTTP 请求中的标头名称无效
- 如何在VS2019中创建C++中的HTTP PUT请求?
- 发送带有ESP8266的 HTTP 发布请求
- C/C++ - 为 PUT 请求实现 http 协议