python3 pycurl 出现 TypeError: string argument expected, got 'bytes' 解决方案

来源:互联网 发布:java并发最好的书籍 编辑:程序博客网 时间:2024/06/01 12:53

用pycurl请求指定链接并返回结果时出现 TypeError: string argument expected, got 'bytes'  错误

经过排查问题出现在使用StringIO的write方法上,用BytesIO替代StringIO即可解决问题,代码如下:

import pycurlimport jsonfrom 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()



0 0