C++使用WinHTTP访问http/https服务
环境: window10_x64 & vs2022python版本: 3.9.13
日常开发中,会遇到c/c++作为客户端访问http/https服务的情况,今天整理下windows10环境下c/c++使用winhttp访问http/https服务的笔记,并提供相关资源下载。
我将从以下几个方面展开:
[*]http服务构建
[*]https证书生成及服务构建
[*]winhttp使用示例
[*]资源下载
一、模拟http服务端
1、构建http服务
这里使用tornado来构建http服务。
示例代码(httpServer1.py):
#! /usr/bin/env python3
#-*- coding:utf-8 -*-
import tornado.ioloop
import tornado.web
import tornado.httpserver
import json,time,datetime
settings = {
"debug" : False ,
}
def trace(reqType,reqBody):
msg = str(datetime.datetime.now()) + " , [" + reqType + "] , " + str(reqBody)
print(msg)
class MainHandler(tornado.web.RequestHandler):
def get(self):
trace("get",self.request.arguments)
#query = self.get_query_argument("query")
#print("query : %s" % query)
self.set_header('content-type', 'application/json')
#self.write(json.dumps({"result" : "test message"}))
self.finish(json.dumps({"result" : "get message"}))
def put(self):
trace("put",self.request.body)
self.finish(json.dumps({"result" : "put message"}))
def post(self):
#trace("post",self.request.arguments)
trace("post",self.request.body)
self.set_header('Content-type', 'application/json')
#self.set_header('Transfer-Encoding', 'chunked')
self.finish(json.dumps({"result" : "post message %d" % time.time()}))
if __name__ == "__main__":
port = 8093
print("listen on port %d"%port)
application = tornado.web.Application([
(r"/.*", MainHandler),
],**settings)
application.listen(port)
#http_server = tornado.httpserver.HTTPServer(application)
#http_server.bind(port,"0.0.0.0")
#http_server.start(num_processes=0)
tornado.ioloop.IOLoop.instance().start()2、服务运行效果
curl测试命令如下:
curl -vhttp://127.0.0.1:8093 && echo ""运行效果如下:
二、模拟https服务端
构建https服务,需要使用证书,这里使用自签名证书来实现。
1、生成证书
生成自签名证书(genCertTest1.bat):
goto startcat > openssl.cnf
页:
[1]