您的位置:首页 > 理论基础 > 计算机网络

POCO库下访问HTTPS获取返回的JSON数据

2016-04-08 10:56 911 查看
访问HTTPS不同于访问HTTP,一些接口如登录还有一些需要数据加密的就需要访问HTTPS才能获取到返回数据,下面是具体介绍:

1.下载POCO库,下载时需要注意POCO库(下载地址点击打开链接)有俩个版本,其中一个是没有HTTPS文件的,这是我们要下载下面的库(poco-1.7.2-all),然后编译使用

2.下载完POCO库后还不能直接用,需要下载ActivePerl(下载地址点击打开链接)和OpenSSL(下载地址点击打开链接),然后编译将生成include、bin和lib文件拷到相应工程目录下(具体编译方法不做介绍了,可去网上搜),然后就可以进行访问了

下面的是具体的访问代码:

#include "stdafx.h"
#include <iostream>

#include "Poco/Net/HTMLForm.h"
#include "Poco/URI.h"
#include "Poco/Net/HTTPClientSession.h"
#include "Poco/Net/HTTPRequest.h"
#include "Poco/Net/HTTPResponse.h"
#include "Poco/StreamCopier.h"
#include "Poco/Net/NetException.h"

#include "Poco/JSON/Object.h"
#include "Poco/JSON/Parser.h"
#include "Poco/Dynamic/Var.h"

#include "Poco/Net/HTTPSClientSession.h"
#include "Poco/Net/Context.h"
#include "Poco/Net/SSLException.h"

using namespace::Poco::JSON;

int _tmain(int argc, _TCHAR* argv[])
{
Poco::URI purl("");//这里输入完整的URL
try
{

Poco::Net::Context::Ptr context = new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, "", "", "", Poco::Net::Context::VERIFY_NONE, 9, false);
Poco::Net::HTTPSClientSession session(context);
session.setHost(purl.getHost());
session.setPort(purl.getPort());
Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET, purl.getPathAndQuery(), Poco::Net::HTTPMessage::HTTP_1_1);
std::ostream& ostr = session.sendRequest(req);
Poco::Net::HTTPResponse res;
std::istream& istr = session.receiveResponse(res);

std::string temp;
Poco::StreamCopier::copyToString(istr, temp);
std::cout << temp << std::endl;
}
catch (const Poco::Net::SSLException& e)
{
std::cerr << e.what() << ": " << e.message() << std::endl;
}
catch (const std::exception& e)
{
std::cerr << e.what() << std::endl;;
}

system("PAUSE");

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: