requests是用python实现的第三方http库。
post接口:
结果:
还有一个简单的示例:
更新:发送请求与传递参数
带参数的get请求
impor requests
r = requests.get('https://www.baidu.com/') # 最基本的get请求
print r.status_code # 获取返回状态码
r = requests.get('http://dict.baidu.com/s', params={'wd':'shell'}) # 带参数的get请求,说明一下,dict.baidu.com是百度词典主页,可直接写成http://dict.baidu.com/。另外,这里的参数是字典类型
print r.url
----> https://dict.baidu.com/s?wd=shell
通过网页打开该url,如下
如上图所示,在浏览器地址栏输入:https://dict.baidu.com,然后输入python,通过浏览器的开发者模式查看网页,可以看到 查询字符串参数有3个。请求的url为:https://dict.baidu.com/s?wd=python&device=pc&from=home
这与通过脚本传递参数的get请求的url是不一样的。
print r.text
报错: ERROR (UnicodeEncodeError): 'ascii' codec can't encode character 。。。。。后面省略
解决办法:真实有效
在python的lib\site-packages文件夹下新建一个sitecustomize.py
添加如下内容,设置编码为utf8
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
此时重启python解释器,执行sys.getdefaultencoding()(说明,这个不知道怎么执行,我只是执行了sitecustomize.py文件),发现编码已经被设置为utf8的了,多次重启之后,效果相同,这是因为系统在python启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。
结果:
post请求示例:
import requests
requests.post('http://www.itwhy.org/wp-comments-post.php', data={'comment': '测试POST'}) #POST参数实例
这里的data是字典类型,属于python类型
post发送json数据:
import requests
import json
r = requests.post('https://api.github.com/some/endpoint', data=json.dumps({'some':‘data’})) # 因为post发送的是json数据,所以需要将python数据转换成json数据,使用json.dumps()函数。
print r.json()
定制header
下面的data和headers都用的是字典类型,即python的数据类型。
import requests import json data = {'some': 'data'} headers = {'content-type': 'application/json', 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'} r = requests.post('https://api.github.com/some/endpoint', data=data, headers=headers) print(r.text)