c++ 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;

 

try
     {

         transform(mac.begin(), mac.end(), mac.begin(), ::toupper);
        
         string postString = "p1=" + p1 + "&p2=" + p2 ;//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是form里面每一个name都要加进来  
         SSLInitializer sslInitializer;

         SharedPtr<InvalidCertificateHandler> ptrCert = new ConsoleCertificateHandler(false);
         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 = "https://www.xxx.com/";
         URI uri(url);
         HTTPSClientSession client(uri.getHost(), uri.getPort());
         HTTPRequest request(HTTPRequest::HTTP_POST, uri.getPath());
         request.setContentType("application/x-www-form-urlencoded;charset=UTF-8");
         std::string reqBody(postString);
         request.setContentLength(reqBody.length());

         request.set("headerkey",postString);// 
          request.set("USER-AGENT", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"); 
          client.sendRequest(request) << reqBody;//发送HTTP请求到指定的服务器 
          HTTPResponse response; 
          istream& is = client.receiveResponse(response);//声明一个引用,接收HTTP请求响应 // 
          if (response.getStatus() == Poco::Net::HTTPResponse::HTTP_OK) 
          { 
            log("response HTTP_OK contentLength" + std::to_string(response.getContentLength())); 
            char* pData = new char[response.getContentLength()]; 
            is.read(pData, response.getContentLength()); 
            std::string srcString(pData, response.getContentLength()); 
            log("httppost-result2=" + srcString); 
            return DeserializeResponse(srcString); 
          } 
          catch (Poco::Exception ex) 
          { 
            log( " Message=" + ex.message()); /* 
          }

 

from:http://stackoverflow.com/questions/10875938/how-to-use-openssl-in-poco-c-library-correctly

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Poco C++ Libraries 是一个开源的跨平台 C++ ,提供了丰富的功能和工具来简化 C++ 开发。在 Poco 中,有一个名为 Timer 的类,可以用来实现定时器功能。 Timer 类提供了一种简单的方式来创建、启动和管理定时器。它可以在指定的时间间隔后触发回调函数,也可以设置定时器的重复执行次数。 要使用 Timer 类,首先需要包含 "Poco/Timer.h" 头文件。然后,可以创建一个 Timer 对象,并调用其 start() 方法来启动定时器。start() 方法需要两个参数:定时器触发的时间间隔和回调函数。 下面是一个使用 Poco Timer 的简单示例代码: ```cpp #include <iostream> #include "Poco/Timer.h" #include "Poco/Thread.h" void timerCallback(Poco::Timer& timer) { std::cout << "Timer triggered!" << std::endl; } int main() { Poco::Timer timer(1000, 2000); // 时间间隔为1秒,重复执行2次 timer.start(Poco::TimerCallback<timerCallback>()); Poco::Thread::sleep(10000); // 等待10秒钟,观察定时器触发 timer.stop(); return 0; } ``` 在上面的示例中,我们创建了一个 Timer 对象,设置时间间隔为1秒,重复执行2次。回调函数 timerCallback() 在每次定时器触发时被调用,这里只是简单地输出一条信息。 注意,为了保持定时器工作,我们在主线程中使用 Poco::Thread::sleep() 方法让程序等待10秒钟。在实际应用中,可能需要使用其他的方式来保持程序运行。 希望这个示例能帮助你了解如何使用 Poco 中的 Timer 类实现定时器功能。如果有任何问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值