def post_request(payload, share=None):
c = pycurl.Curl()
data_buf = BytesIO()
# header_buf = BytesIO()
headers = {'count': 0, 'content': [{}]}
try:
setup_curl_for_post(c, payload, data_buf, headers, share) # header_buf)
with aiohttp.Timeout(payload.get('aiohttp_timeout', 60)):
resp = await CurlLoop.handler_ready(c)
# encoding = None
# if 'content-type' in headers:
# content_type = headers['content-type'].lower()
# match = re.search('charset=(\S+)', content_type)
# if match:
# encoding = match.group(1)
# print('Decoding using %s' % encoding)
body = data_buf.getvalue()
encoding = 'utf-8'
data = body.decode(encoding, 'ignore') if len(body) > 0 else ''
# if encoding is None:
# dammit = UnicodeDammit(body, ["utf-8", "gb2312", "gbk", "big5", "gb18030"], smart_quotes_to="html")
# data = dammit.unicode_markup
# encoding = dammit.original_encoding
# else:
# data = body.decode(encoding, 'ignore')
# headers.remove({})
headers['content'] = [h for h in headers['content'] if len(h) > 0]
resp.update({
# 'url': payload.get('url'),
'data': data,
'headers': headers,
'encoding': encoding,
})
post_func = payload.get('post_func')
if type(post_func) == str:
post_func = load(post_func)
if post_func:
resp = post_func(payload, resp)
# post_func = payload.get('post_func')
# if post_func:
# post_func = load(post_func)
# resp = post_func(payload, resp)
return resp
finally:
c.close()
评论列表
文章目录