[Python系列]Python的request库
2017-07-26 本文已影响35人
测试你个头
Python经常被用来做爬虫和http接口测试,很大一部分原因就是requests库的方便易用,实际学习过程中可以对比下java的httpclient包。
1.安装requests库
pip install requests
requests定义了常用的http方法:
requests.get(“https://xxx”) #GET请求
requests.post(“https://xxx”) #POST请求
requests.put(“https://xxx/put”) #PUT请求
requests.delete(“https://xxx/delete”) #DELETE请求
requests.head(“https://xxx/get”) #HEAD请求
requests.options(“https://xxx/get”) #OPTIONS请求
```
以最常用的get方法为例:
```
# 不带参数的get方法
def member_in():
ret = None
try:
ret = requests.get(globals.member_in_url)
except Exception as e:
logging.info("member_in failed : " + e.message)
return
sid = ret.content
logging.info("member_in success " + sid)
return sid
# 带参数的get方法
def member_out(sid):
try:
# get可通过url传参
requests.get(globals.member_out_url + "?sid=" + sid)
# requests.get(globals.member_out_url, params={'sid': sid})
except Exception as e:
logging.info("member_out failed :" + e.message)
return
logging.info("member_out success : " + sid)
return
```
post方法带参数:
```
import requests
import json
# 键值对参数
requests.post(globals.member_out_url, data={'intence': 'POST测试'})
# 待json参数
requests.post(globals.member_out_url, data=json.dumps({'intence': 'POST测试'}))
```
设置header
```
import requests
import json
data = {'test': 'testdata'}
headers = {'content-type': 'application/json','xxx','yyy'}
r = requests.post(globals.member_out_url, data=data, headers=headers)
print(r.text)
```
3.response对象
requests的方法会返回一个response对象,类似java里面的HttpResponse
```
r = requests.get(globals.member_out_url)
logger.info(r.status_code) #返回http状态码。
logger.info(r.raw) #返回原始响应体,也就是 urllib 的 response 对象。
logger.info(r.content) #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。
logger.info(r.text) #字符串方式的响应体,会自动根据响应头部的字符编码进行解码。
logger.info(r.headers) #以字典对象存储服务器响应头。
```
4.其他
cookie,鉴权等等