将此curl cmd转换为Python 3

将此curl cmd转换为Python 3,python,post,curl,https,python-3.x,Python,Post,Curl,Https,Python 3.x,以下curl命令工作正常(私有数据匿名化): 我如何以正确的Python3.3方式发送完全相同的HTTPS POST请求?如果可以避免的话,我不想使用Python 3.3标准库以外的任何东西(换句话说,不使用twilio Python模块,或“请求”,或pycurl,或普通Python 3.3安装之外的任何东西) 首选的Python方法似乎在版本之间不断演变,我通过谷歌搜索找到的代码片段从未提及他们使用的是哪个版本或没有做登录部分,Python文档中充满了“从3.x开始就不推荐”,但从未包含新方

以下curl命令工作正常(私有数据匿名化):

我如何以正确的Python3.3方式发送完全相同的HTTPS POST请求?如果可以避免的话,我不想使用Python 3.3标准库以外的任何东西(换句话说,不使用twilio Python模块,或“请求”,或pycurl,或普通Python 3.3安装之外的任何东西)

首选的Python方法似乎在版本之间不断演变,我通过谷歌搜索找到的代码片段从未提及他们使用的是哪个版本或没有做登录部分,Python文档中充满了“从3.x开始就不推荐”,但从未包含新方法的代码示例


如果curl可以很容易地做到这一点,那么标准Python 3.3也可以做到。但是现在应该如何做到这一点呢?

这里有一个同时适用于Python 2和Python 3的版本:

导入请求#pip安装请求
url='1〕https://api.twilio.com/2010-04-01/Accounts/abc/SMS/Messages.json'
r=请求。post(url,dict(
From='+17035551212',
至='+17035551212',
Body='thisatest'),auth=('foo','bar'))
打印(右标题)
打印(r.text)#或r.json()
要在Python 3.3上使用基本http身份验证发出https post请求,请执行以下操作:

从base64导入b64encode
从urllib.parse导入urlencode
从urllib.request导入请求,urlopen
用户,密码='foo','bar'
url='1〕https://api.twilio.com/2010-04-01/Accounts/abc/SMS/Messages.json'
数据=urlencode(dict(从='+1703555212',到='+1703555212',
Body='thisatest'))。encode('ascii')
headers={'Authorization':b'Basic'+
b64encode((用户+':'+密码).encode('utf-8'))}
cafile='cacert.pem'#http://curl.haxx.se/ca/cacert.pem
response=urlopen(请求(url、数据、标题),cafile=cafile)
打印(response.info())
打印(response.read().decode())#假设utf-8(可能用于应用程序/json)
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/abc/SMS/Messages.json' \
-d 'From=%2B14155551234' \
-d 'To=%2B17035551212' \
-d 'Body=This+is+a+test' \
-u foo:bar