历时两周,整整两周,才把这个 HTTPS 的程序弄好,不知是笨还是什么的,谢天谢地,总算能发送了。
开始时走了很多弯路,一是 POCO 库下载了个阉割版本的, OpenSSL 也下了个阉割版本的,搞的自己
奇怪了一两天,一直在国外网上找寻有用的信息。 google 都搜烂了。第一周过后,虽然能使用 HTTP

发送程序了,却留下了 HTTPS 这个难题,只能下周才能慢慢解决了。

第二周,仔细阅读 POCO 官方的文档,发现 POCO 还有一个完全版, OpenSSL 也有一个供开发者使用
的完全版,赶紧下下来,小心地编译,这次比较幸运,与前几次抓狂相比, Crypto 模块和 OpenSSL 模块
成功的编译过去了,不过在编译相应的 samples 时出现了错误。

编译好后,果然可以使用 HTTPSClientSession 这个类了,用它赶快写了一个程序,结果一上来 crash
_pInstance 为空。赶快查询函数的注释,说:如果要使用 OpenSSL 库,则必须在任何使用它的类之前,初始化
它,用 context ,好吧,继续 google ,终于在一篇文章上找到了一个用例。抄一遍,仔细阅读下,发送成功了
不过收到的却是一个 JavaScript 脚本(这是错误的,应该收到一个 XML 数据)。用 Qt 做了个实验,收到同样
的数据,我以为是正确的了,就这样继续做其他的事了。余下的一两天都在弄经常报出的 SSL 异常,空指针
什么的。最终在周五,我发现了,那就是,我发送数据的目的地地址是错的,我一直在错的地址上做实验,
然后用正确的,又报 SSL 异常,最后最后的,改变了两个函数,收到了,正常的数据。这是一段难忘的经历
,它告诉我,做事一定要仔细,不要放过任何蛛丝马迹!

让我们来初略分析一下这个HTTPS小程序:

首先,得编译含有OpenSSL库的POCO库,下载Win32OpenSSL-1_0_1c.exe和poco-1.4.3p1-all.zip,exe
安装到C盘把,因为POCO编译的时候默认指定C盘根下,顺便在安装好后把文件夹名字改成OpenSSL。解压
zip到C盘把,图个方便,如果要改指定的OpenSSL路径,编辑buildWin.bat。添加INCLUE和LIB环境变量
(各自指向OpenSSL相应的目录)我用的的是VS2005.所以编译运行buildWin 80。

中途可能会遇到画面停留死都不动的地方,可能在什么DOMWriter地方,多按记下Ctrl+C,当然了要选N。

编译结束。

随便打开一个NetSSL_OpenSSL目录下的sample工程,把里面代码全注释了,然后就在这个工程写自己的程序.

Poco::Net::Context::Ptr m_context = new Context(Context::CLIENT_USE, "", "", "", Context::VERIFY_NONE, 9, false);//没搞懂这些参数,先这样写着
HTTPSClientSession session(m_context);
URI uri("服务器的域名或IP地址");
HTTPRequest request(HTTPRequest::HTTP_POST,"你要访问的目标在服务器上的路径");
session.setHost(uri.getHost());
session.setPort("服务器的端口");
session.sendRequest(request) << "要发送的数据";
HTTPResponse response;
std::istream& res = session.receiveResponse(response);
std::string str;//用作接受数据
res>>str;	//开始接受数据
session.reset();//重置会话,接待下次连接

完了,看似简单,唉,错一个参数,就会导致异常的发生,这对一个先接触Qt的我来说,情何以堪啊。很奇怪,
它这个地方的接受数据的方法是同步调用的,但看源代码的话,它里面是个do_while循环,可以理解了,同时,
你可以设置超时时间限制。点点滴滴,一言难尽,慢慢熟悉把。 POCO C ++库依赖项构建。 提供带有工具的 poco 库的分叉版本,以自动构建以供其他项目使用。 该版本仅构建Foundation,Net和Util POCO 组件的发布和调试版本。 它使用静态链接的MSVC运行时库(vs120_xp / VS2013,WinXP兼容)将它们构建为静态库。 要构建,请运行以下命令 npm install && grunt jenkins 输出工件将位于build-artifacts/ 我们简要回顾了一种 简单 而有效的基于投影到凸集(POCS)方法的聚类技术,称为基于POCS的聚类算法。该算法利用POCS的收敛特性应用于聚类任务,并在一定程度上实现了可行的改进。在一些基准数据集上验证了该算法的有效性。作者:LA Tran。 此存储库包含用于在 Windows 上为 Hadouken 下载、构建和发布 Poco C++ 库(包括 Net SSL _Open SSL )的构建脚本。 这些库是使用 MSVC-12 (Visual Studio 2013) 构建的。 PS> .\build.ps1 输出(包括 NuGet 包)放在bin文件夹中。 这个项目是在 MIT 许可下按原样提供的。 有关更多信息,请参阅LICENSE 。 对于 Poco ,请参阅 。 欢迎来到OData2 Poco OData2 Poco 是一个代码生成工具,用于从OData提要生成普通的CLR对象(PO​​CO)。 POCO 类可以在类型化的RESTful客户端OData服务中使用,并且可以通过设置许多选项来控制代码生成。 OData2 Poco 提供三种型号: 控制台工具:OData2 Poco .CommandLine(又名o2pgen)。 .Net Core全局工具dotnet-o2pgen支持netcoreapp2.1。 一个类库:支持net45 / net461 / netstandard2.0。 构建 服务器 AppVeyor Linux / OS X OData2 Poco 的功能 生成与OData Feed中存储的XML MetaData中定义的实体相对应的 POCO 类。 * 生成基于存储在 服务器 /或EDMX xml 访问 HTTPS 不同于访问HTTP,一些接口如登录还有一些需要数据加密的就需要访问 HTTPS 才能获取到返回数据,下面是具体介绍: 1.下载 POCO 库,下载时需要注意 POCO 库(下载地址点击打开链接)有俩个版本,其中一个是没有 HTTPS 文件的,这是我们要下载下面的库( poco -1.7.2-all),然后编译使用 2.下载完 POCO 库后还不能直接用,需要下载ActivePerl(下载地址点击打开链接 #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 \Date 一、预备知识: 1、 POCO POCO C++ Libraries是一套第三方库,去年的这个时候才进入公司实习,前辈让我接触这个库很难受官网全是英文: https :// poco project.org/,GitHub: https ://github.com/ poco project/ poco ,库方法查找: https :// poco projec... HTTPS ClientSession //HTTP会话类 HTTPRequest //HTTP请求类 HTTPResponse //HTTP回应类首先当然是建立一个会话,在此基础上发送一个请求,最后收到一个回应。 HTTPClientSession s("127.0.0.1" 什么是 POCO 库? POCO 库是强大的的跨平台C++库,可以用来编写多平台的网络应用 程序 ,这些平台包括桌面端、服务端、移动端、IOT(物联网)、嵌入式系统等。总的来说是一个非常强大的综合性库。 为什么使用 Poco 库? 1.支持跨平台 2.性能表现优异 3.API使用方便,便于上手 4.库可以拆分使用,容易实现轻量化调用 5.功能模块丰富 6. Poco C++库是在Boost软件许可证下授权的,既可以用来开发非商业应用,也可以用来开发商业应用。可以说是可以自由使用的了。 POCO 库都能做哪些