python关于SSL的认证--pycurl模块使用
2024-09-05 06:17:39
今天在做微信支付退款接口的时候,因为需要使用到双向证书的认证,所以一开始是没有头绪的,后来在网上找到了相类似的教程,发现了pycurl模块,才成功实现了证书认证,教程链接:http://blog.csdn.net/yueguanghaidao/article/details/41451711/。
然后因为是直接copy下来的代码,所以自己后面花了点时间来熟悉一下这个模块,因为我是想达到使用证书post的目的, 所以就编写了一个函数
def postXmlSSL(self, xml, url, second=30, cert=True, post=True):
# 使用证书进行post
curl = pycurl.Curl() #创建pcurl对象
curl.setopt(pycurl.SSL_VERIFYHOST, False) #对于某些采用HTTPS的网站,有时会因为证书验证失败而无法正常访问,pycurl模块提供了取消验证过程的功能。
curl.setopt(pycurl.SSL_VERIFYPEER, False)
curl.setopt(pycurl.HEADER, False) #设置不输出header
curl.setopt(pycurl.URL, url) #设置url
curl.setopt(pycurl.TIMEOUT, second) #连接超时时间
if cert: #如果是存在证书,就会有证书和密钥,python使用的是两个pem证书,然后定义类型,输入证书路径就ok了。
curl.setopt(pycurl.SSLKEYTYPE, "PEM")
curl.setopt(pycurl.SSLKEY, "###")
curl.setopt(pycurl.SSLCERTTYPE, "PEM")
curl.setopt(pycurl.SSLCERT, "###")
if post: #使用的是post方法,然后post内容是xml格式的。
curl.setopt(pycurl.POST, True)
curl.setopt(pycurl.POSTFIELDS, xml)
buff = BytesIO() #python3使用的是io模块的字节流,而不是教程中的StingIO,那个是python2使用的
curl.setopt(pycurl.WRITEFUNCTION, buff.write) #pycurl模块不具备存储的功能,所以将数据写入字节流当中 curl.perform() #执行操作
return buff.getvalue().decode("utf-8") #返回字节流中的数据,返回之前要解码,我是从微信接口获取的数据,所以是用utf-8来解码。
搞完这些发现了一个专门讲pycurl模块的文档,哔了狗,要是早点发现就好了。。。。贴出文档链接:https://mp.weixin.qq.com/s?__biz=MzIwMDYxMjgyMg==&mid=2650361142&idx=1&sn=b11ad13a718b8c91280eab1ffbe62b98
最新文章
- hibernate映射文件
- Python面试题 —— 计算列表中出现最多次的字符
- 【noiOJ】p8208
- Count Color(线段树+位运算 POJ2777)
- Java Script 练习题
- hdu4935 Prime Tree(2014多校联合第七场)
- 制作透明色:《CSS3 RGBA》与Opacity样式用法
- [Programming Entity Framework] 第3章 查询实体数据模型(EDM)(一)
- Vim 中使用cscope
- 虚幻4以及DX12将允许开发者利用Xbox One的更多性能(转)
- ASP.NET MVC 下 引用阿里巴巴和IconFont字体路径404问题
- Cocos2d-x CCActionInterval
- -_-#【Backbone】Collection
- ios开发 block语句块
- POI导出大量数据的简单解决方案(附源码)-Java-POI导出大量数据,导出Excel文件,压缩ZIP(转载自iteye.com)
- 阻止微信浏览器/QQ浏览器长按弹框“在浏览器打开”
- 重拾Python(4):Pandas之DataFrame对象的使用
- 电子产品使用感受之——为什么我把Apple Watch S2 升级到了 S4?
- 网页异步加载之AJAX理解
- Angular4-配置