POCO GitHub地址https://github.com/pocoproject/poco

http_example.cpp

#include <iostream>
#include <Poco/URI.h>
#include <Poco/StreamCopier.h>
#include <Poco/Net/HTTPClientSession.h>
#include <Poco/Net/HTTPRequest.h>
#include <Poco/Net/HTMLForm.h>
#include <Poco/Net/HTTPResponse.h>
#include <Poco/Net/NetException.h>
using namespace Poco;
using namespace Poco::Net;
void getExample()
{
try
{
URI uri("http://api.eyekey.com/face/Check/checking?app_id=f89ae61fd63d4a63842277e9144a6bd2&app_key=af1cd33549c54b27ae24aeb041865da2&url=http%3A%2F%2Fpicview01.baomihua.com%2Fphotos%2F20120713%2Fm_14_634778197959062500_40614445.jpg");
HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest request(HTTPRequest::HTTP_GET, uri.getPathAndQuery());
session.sendRequest(request);
HTTPResponse response;
std::istream &is = session.receiveResponse(response);
const HTTPResponse::HTTPStatus &status = response.getStatus();
if (HTTPResponse::HTTPStatus::HTTP_OK == status)
{
std::string result;
StreamCopier::copyToString(is, result);
std::cout << result << std::endl;
}
else
std::cout << status << std::endl;
}
catch (const NetException &ex)
{
std::cerr << "ex: " << ex.displayText() << std::endl;
}
}
void postExample()
{
try
{
URI uri("http://api.eyekey.com/face/Check/checking");
HTTPClientSession session(uri.getHost(), uri.getPort());
HTMLForm form;
form.add("app_id", "f89ae61fd63d4a63842277e9144a6bd2");
form.add("app_key", "af1cd33549c54b27ae24aeb041865da2");
form.add("url", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1535455294084&di=8ca75c2b8817900345c35dbe0d1940a5&imgtype=0&src=http%3A%2F%2Fa2.att.hudong.com%2F50%2F67%2F01300533963892135071679109235.png");
HTTPRequest request(HTTPRequest::HTTP_POST, uri.getPath(), HTTPRequest::HTTP_1_1);
form.prepareSubmit(request);
form.write(session.sendRequest(request));
HTTPResponse response;
std::istream &is = session.receiveResponse(response);
const HTTPResponse::HTTPStatus &status = response.getStatus();
if (HTTPResponse::HTTPStatus::HTTP_OK == status)
{
std::string result;
StreamCopier::copyToString(is, result);
std::cout << result << std::endl;
}
else
std::cout << status << std::endl;
}
catch (const NetException &ex)
{
std::cerr << "ex: " << ex.displayText() << std::endl;
}
}
int main()
{
getExample();
std::cout << std::endl;
postExample();
std::cout << std::endl;
std::system("pause");
return ;
}

https_example.cpp

#include <iostream>
#include <Poco/URI.h>
#include <Poco/StreamCopier.h>
#include <Poco/Net/SSLManager.h>
#include <Poco/Net/AcceptCertificateHandler.h>
#include <Poco/Net/Context.h>
#include <Poco/Net/HTTPSClientSession.h>
#include <Poco/Net/HTTPRequest.h>
#include <Poco/Net/HTMLForm.h>
#include <Poco/Net/HTTPResponse.h>
#include <Poco/Net/NetException.h>
using namespace std;
using namespace Poco;
using namespace Poco::Net;
void getExample()
{
try
{
SSLManager::InvalidCertificateHandlerPtr handlerPtr(new AcceptCertificateHandler(false));
Context::Ptr context = new Context(Context::CLIENT_USE, "");
SSLManager::instance().initializeClient(nullptr, handlerPtr, context);
HTTPSClientSession session(context);
URI uri("https://api.eyekey.com/face/Check/checking?app_id=f89ae61fd63d4a63842277e9144a6bd2&app_key=af1cd33549c54b27ae24aeb041865da2&url=http%3A%2F%2Fpicview01.baomihua.com%2Fphotos%2F20120713%2Fm_14_634778197959062500_40614445.jpg");
session.setHost(uri.getHost());
session.setPort(uri.getPort());
HTTPRequest request(HTTPRequest::HTTP_GET, uri.getPathAndQuery());
session.sendRequest(request);
HTTPResponse response;
istream &is = session.receiveResponse(response);
const HTTPResponse::HTTPStatus &status = response.getStatus();
if (HTTPResponse::HTTPStatus::HTTP_OK == status)
{
StreamCopier::copyStream(is, cout);
cout << endl;
}
else
cout << status << endl;
}
catch (const NetException &ex)
{
cerr << ex.displayText() << endl;
}
}
void postExample()
{
try
{
SSLManager::InvalidCertificateHandlerPtr handlerPtr(new AcceptCertificateHandler(false));
Context::Ptr context = new Context(Context::CLIENT_USE, "");
SSLManager::instance().initializeClient(nullptr, handlerPtr, context);
HTTPSClientSession session(context);
URI uri("https://api.eyekey.com/face/Check/checking");
session.setHost(uri.getHost());
session.setPort(uri.getPort());
HTTPRequest request(HTTPRequest::HTTP_POST, uri.getPath());
HTMLForm form;
form.set("app_id", "f89ae61fd63d4a63842277e9144a6bd2");
form.set("app_key", "af1cd33549c54b27ae24aeb041865da2");
form.set("url", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1535455294084&di=8ca75c2b8817900345c35dbe0d1940a5&imgtype=0&src=http%3A%2F%2Fa2.att.hudong.com%2F50%2F67%2F01300533963892135071679109235.png");
form.prepareSubmit(request);
form.write(session.sendRequest(request));
HTTPResponse response;
istream &is = session.receiveResponse(response);
const HTTPResponse::HTTPStatus &status = response.getStatus();
if (HTTPResponse::HTTPStatus::HTTP_OK == status)
{
string result;
StreamCopier::copyToString(is, result);
cout << result << endl;
}
else
cout << status << endl;
}
catch (const NetException &ex)
{
cerr << ex.displayText() << endl;
}
}
int main()
{
getExample();
cout << endl;
postExample();
cout << endl;
system("pause");
return ;
}

使用POCO发送HTTP(S)请求的更多相关文章

  1. 如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办?

    理想的RESTful Web API采用面向资源的架构,并使用请求的HTTP方法表示针对目标资源的操作类型.但是理想和现实是有距离的,虽然HTTP协议提供了一系列原生的HTTP方法,但是在具体的网络环 ...

  2. 调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案

    第一次调用webapi出错如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:// ...

  3. 从零开始学习Node.js例子七 发送HTTP客户端请求并显示响应结果

    wget.js:发送HTTP客户端请求并显示响应的各种结果 options对象描述了将要发出的请求.data事件在数据到达时被触发,error事件在发生错误时被触发.HTTP请求中的数据格式通过MIM ...

  4. 使用 HttpWebRequest 发送模拟 POST 请求

    使用HttpWebRequest发送模拟POST请求  网页中,如果form的method="POST",这时点击submit按钮可以给服务器发送了一个POST请求,如果metho ...

  5. IOS学习之路十八(通过 NSURLConnection 发送 HTTP 各种请求)

    你想通过 Http 协议向服务器发送一个 Get 的包装请求,并在这个请求中添加了一些请 求参数. 向远程服务器发送一个 GET 请求,然后解析返回的数据.通常一个 GET 请求是添加了 一些参数的, ...

  6. 发送POST测试请求的若干方法

    最近在工作中需要测试发送带Json格式body值的HTTP POST请求.起初,我在Linux环境下使用curl命令去发送请求,但是,在发送的过程中却遇到了一些问题,经过一段时间的摸索,发现了以下几种 ...

  7. Postman教程——发送第一个请求

    系列文章首发平台为果冻想个人博客.果冻想,是一个原创技术文章分享网站.在这里果冻会分享他的技术心得,技术得失,技术人生.我在果冻想等待你,也希望你能和我分享你的技术得与失,期待. 前言 过年在家,闲来 ...

  8. charles重复发送一个网络请求&同时发送N次

    重发网络请求的目的:后端调试的过程中,一直在客户端进行点点点比较麻烦,此时直接发送请求比较方便查看调试后的结果(方便后端调试) 1.重复发送一个请求(有两种方法) (1)选定该请求,右键选择repea ...

  9. [Postman]发送第一个请求(1)

    通过API请求,您可以与具有要访问的API端点的服务器联系,并执行某些操作.这些操作是HTTP方法. 最常用的方法是GET,POST,PUT和DELETE.方法的名称是不言自明的.例如,GET使您可以 ...

随机推荐

  1. shell的for循环

    与其他编程语言类似,Shell支持for循环. for循环一般格式为: for 变量 in 列表 do command1 command2 ... commandN done 列表是一组值(数字.字符 ...

  2. VM上完美运行macos

    VM上完美运行macos 作者:方辰昱 时间:十月三号 效果图 简要步骤 下载安装VM 下载镜像文件链接,darwin.iso,unlocker,beamoff.合集下载链接:https://pan. ...

  3. AJAX技术简介

    AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 您应当具备的基础知识 在继续学习之前,您需要对下面的知识有基本的了解: HTML / XHTML CSS JavaScript ...

  4. UVa10234 Race

    递推,设有i个人排在第一名,剩下的人排在后面,方案有f[i]种,则f[i]=sum(c[n][i]*f[n-i]) 1<=i<=n /*by SilverN*/ #include<a ...

  5. Codevs 2602 最短路径问题

     时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间. ...

  6. awk 对简单文本处理试水

    #juanjuan是一个文件 [root@localhost c_test]# cat juanjuan , , bffd97d0 , , bffd97cc , , bffd97c8 , , #-F ...

  7. SQL自动生成A到Z二十六个英文字母

    if object_id('#tempdriveinfo') is not null drop table #tempdriveinfo create table #tempdriveinfo ( [ ...

  8. easyui combobox模糊查询

    用easyui框架开发的攻城狮恐怕都遇到过这样一个问题,就是在新增页面combobox下拉框需要支持模糊查询,但是输入不是combobox中Data里面的值的时候,点击保存,依然是可以新增进去的,这样 ...

  9. Filter和Interceptor的终归作用还是从入口修改或验证请求进来的数据

    Filter是Java EE标准.Inteceptor是Spring 标准. Filter在servlet前面,Interveptor在servlet之后 Filter和Inteceptor都可以改变 ...

  10. .net core mvc启动顺序以及主要部件1

    原文:.net core mvc启动顺序以及主要部件1 首先我是新人一个写这些东西也是为了增加记忆,有不对的地方请多多指教. 说回正题,打开Program.cs文件,看到在有个CrateWebHost ...