下载源码、安装Openssl
下载Poco源码

git clone https://github.com/pocoproject/poco.git

openssl下载安装:
下载地址:http://slproweb.com/products/Win32OpenSSL.html

Light没有静态库及头文件,不要使用

openssl最好安装在c盘根目录,稍后要在poco编译文件中设置路径

编译POCO
使用VS2015,故修改build_vs140.cmd

修改build_vs140.cmd
@echo OFF
if defined VS140COMNTOOLS (
call "%VS140COMNTOOLS%\vsvars32.bat")
buildwin 140 build shared both Win32 samples tests

不修改应该也可以,多个vs版本时需要指定,下面是命令行帮助:

rem buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIGURATION] [PLATFORM] [SAMPLES] [TESTS] [TOOL] [ENV] [VERBOSITY [LOGGER] ]
rem VS_VERSION:    140|150|160
rem ACTION:        build|rebuild|clean
rem LINKMODE:      static_mt|static_md|shared|all
rem CONFIGURATION: release|debug|both
rem PLATFORM:      Win32|x64
rem SAMPLES:       samples|nosamples
rem TESTS:         tests|notests
rem TOOL:          devenv|vcexpress|wdexpress|msbuild
rem ENV:           env|noenv (active only with msbuild, defaulted to env)
rem VERBOSITY      quiet|minimal|normal|detailed|diagnostic
rem LOGGER         <logger path> see msbuild /?
rem
rem VS_VERSION is required argument. Default is build all.

修改builidwin.cmd
在文件中添加openssl环境路径,根据自己的安装路径进行修改:

set OPENSSL_DIR=C:\OpenSSL-Win32
set OPENSSL_INCLUDE=%OPENSSL_DIR%\include;%OPENSSL_DIR%\include\openssl
set OPENSSL_LIB=%OPENSSL_DIR%\lib;%OPENSSL_DIR%\lib\VC
set INCLUDE=%INCLUDE%;%OPENSSL_INCLUDE%
set LIB=%LIB%;%OPENSSL_LIB%

开始编译
执行build_vs140.cmd即可开始
poco目录下bin、lib目录就是生成文件
若64位应该是bin64、lib64

bin目录:

lib目录:

最后整理头文件
如json的头文件路径:poco\JSON\include\Poco\JSON
整理完成:

从lib及bin目录中取出要使用的库,bin-all及lib-all是全部的备份
libcrypto.lib及libssl.lib要用的openssl静态库

重点:确保openssl的头文件项目可以找到,建议一起放在附加包含目录中,头文件在openssl安装目录中
最终整理成include、lib两个文件夹,分别指定为附加包含目录及附加库目录既可以使用
文件放在评论区中

例:使用poco发送https请求:
#include "Poco\File.h"
#include "Poco\FileStream.h"
#include "Poco\Process.h"
#include "Poco\RegularExpression.h"
#include "Poco\DateTime.h"
#include "Poco\DateTimeFormatter.h"
#include "Poco\DateTimeParser.h"
#include "Poco\Net\HTTPSClientSession.h"
#include "Poco\Net\HTTPRequest.h"
#include "Poco\Net\HTTPResponse.h"
#include "Poco\Net\InvalidCertificateHandler.h"
#include "Poco\Net\AcceptCertificateHandler.h"
#include "Poco\URI.h"
#include "Poco\Net\SSLManager.h"
#include "Poco\JSON\Object.h"
#include "Poco\JSON\Parser.h"
#include "Poco\String.h"
#include "Poco\Net\KeyConsoleHandler.h"
#include "Poco\Net\ConsoleCertificateHandler.h"
#include "Poco\SharedPtr.h"

using namespace std;
using namespace Poco;
using namespace Poco::Net;

int main(){
    string postString = "your json data";

SharedPtr<InvalidCertificateHandler> ptrCert = new ConsoleCertificateHandler(true);
    Context::Ptr ptrContext = new Context(Context::CLIENT_USE, "", "", "", Context::VERIFY_NONE, 9, true, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
    SSLManager::instance().initializeClient(0, ptrCert, ptrContext);
    string url = "your url";
    URI uri(url);
    HTTPSClientSession client(uri.getHost(), uri.getPort());
    HTTPRequest request(HTTPRequest::HTTP_POST, uri.getPath());
    request.setContentType("application/json");
    std::string reqBody(postString);
    request.setContentLength(reqBody.length());

client.sendRequest(request) << reqBody;
    HTTPResponse response;
    istream& is = client.receiveResponse(response);
    if (response.getStatus() == Poco::Net::HTTPResponse::HTTP_OK)
    {
        char* pData = new char[response.getContentLength()];
        is.read(pData, response.getContentLength());
        std::string srcString(pData, response.getContentLength());
        cout << srcString << endl;
    }
}

实测ConsoleCertificateHandler()如果传参为false可能会导致证书验证错误时不可用
————————————————
版权声明:本文为CSDN博主「m0_37582045」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37582045/article/details/108833122

VS2015编译Poco+openssl,使用Poco发送HTTPS请求相关推荐

  1. C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁、动车、火车车次信息的方法

    C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁.动车.火车车次信息的方法 1 HTTPS请求 1.1 研究浏览器发送的请求数据 1.2 代码实现 2 分析 ...

  2. PostMan发送Https请求

    PostMan发送Https请求 一.概述 二.准备 三.配置PostMan 3.1.打开Settings,关闭ssl 3.2.配置证书 一.概述 有时候在测试的时候搭建了一个HTTPS的服务,但是在 ...

  3. RestTemplate 发送 Https 请求调用

    RestTemplate 发送 Https 请求调用 个人博客:https://jacob.org.cn import org.apache.http.conn.ssl.NoopHostnameVer ...

  4. 【Spring】Feign客户端发送HTTPS请求绕过认证

    1.概述 转载:https://www.jianshu.com/p/ea627708ab52 一个Spring Boot项目,为了使用Harbor仓库,起初通过Spring RestTemplate完 ...

  5. springboot 使用restTemplate 发送https请求 忽略ssl证书

    最近在写接口的时候给对方回推数据,发送https请求的时候遇到这么个报错:javax.net.ssl.SSLHandshakeException: sun.security.validator.Val ...

  6. HttpClient发送Https请求报 : unable to find valid certification path to requested target

    一.场景   近期在对接第三方接口时,通过HttpClient发送Https请求报 : unable to find valid certification path to requested tar ...

  7. JS(HTTP页面)发送HTTPS请求、同源策略

    今天遇到一个必须在前端HTTP页面发送HTTPS请求的功能,有点小尴尬,这个跨域问题,也没啥好的解决方式,我网上查了一下,也没啥好的方式! 后来总结了一下,有两种方式: 1.a标签 <a hre ...

  8. js发送https请求问题处理总结

    问题1 1.浏览器端无法发送https请求的时候 使用nginx进行转发,具体配置比较简单 问题2: 构建表单传送数据,提示缺失必要的参数. { "error" : "i ...

  9. Python urllib3和requests发送HTTPS请求时出现SSLError或InsecureRequestWarning

    目录 问题及原因分析 优先考虑的解决方法: 下载证书 使用证书 手动获取证书 不推荐使用的备用解决方法: 关闭方法 衍生问题 参考文档 问题及原因分析 在我们通过urllib3和requests进行H ...

最新文章

  1. 零基础Java学习之包(Package)
  2. #pragma pack的作用
  3. 成功将用intelli idea 建立的项目打包成jar文件,并在Linux上成功运行
  4. java输入正数和负数并计算个数
  5. java数据类型_JAVA基础篇(数据类型)
  6. Java非对称加密KeyPairGenerator类
  7. python读取配置文件 ConfigParser
  8. Android控件——ListView之Adapter提供数据(其二)
  9. 面试题 数组长度可否赋值
  10. 输出空格隔开换行_VB编程(六)数据输出 Print 及相关方法
  11. 机器学习很难上手和提升?你只差一条学习路径!
  12. JS面向对象的程序设计(二)
  13. python读取、保存npy文件
  14. A级学科计算机技术,东南大学a类学科排名!附东大a类学科名单
  15. Pandas 重置索引深度总结
  16. 添加打印机计算机无法访问,Win7系统添加打印机提示Windows无法打开“添加打印机”的解决方法...
  17. 感光度和灰阶测试—imatest
  18. JS 之Node节点的 属性、方法 获取
  19. 实战 | 安服仔用一毛钱维修台伊拉克成色笔记本(上)
  20. yarn 出现error An unexpected error occurred错误的解决办法

热门文章

  1. boost::shared_lock相关的测试程序
  2. boost::sort模块实现spreadsort 64 位整数排序示例
  3. boost::multiprecision模块实现打印出所有的阶乘 这将适合一个 128 位整数相关的测试程序
  4. boost::multi_index模块实现复杂搜索和外键相关的测试程序
  5. boost::hana::back用法的测试程序
  6. 宏BOOST_TEST_ALL_WITH的用法实例
  7. VTK:Utilities之FileOutputWindow
  8. VTK:网格之ClipClosedSurface
  9. OpenGL Compute Shader Raytracing 计算着色器光线追踪的实例
  10. C++kruskals算法生成最小协议树(附完整源码)