用pycurl请求指定链接并返回结果时出现 TypeError: string argument expected, got 'bytes' 错误
经过排查问题出现在使用StringIO的write方法上,用BytesIO替代StringIO即可解决问题,代码如下:
import pycurl
import json
from io import *
try:
c = pycurl.Curl()
b = StringIO()
c.setopt(pycurl.WRITEFUNCTION,b.write)
c.setopt(c.URL, 'https://weixin.doviews.com/wxapi')
c.setopt(pycurl.SSL_VERIFYPEER, 1)
c.setopt(pycurl.SSL_VERIFYHOST, 2)
#<TIPS>windows 要指定证书的路径不然会出现
#(77, "SSL: can't load CA certificate file E:\\curl\\ca-bundle.crt")
#证书路径就在curl下载的压缩包里面。mac/linux下面可以注释掉。
#c.setopt(pycurl.CAINFO, "E:\curl\ca-bundle.crt")
#</TIPS>
c.perform()
result = b.getvalue().decode("utf-8")
print(result)
except BaseException as e:
print(e)
finally:
b.close()
c.close()