requests常用请求(get、post json)

requests常用请求(get、post json)

# -*- coding: utf-8 -*-
'''
requests常用请求(get、post json)
'''
import requests
import json

# json.dumps 将python对象转化为json字符串
# json.loads 将json字符串转化为python对象

get

# get
params = {"a": "xxx", "b": "xxx"}
url = "http://..."
# params传参
# r:Response对象,即响应内容
r = requests.get(url, params=params)
print r.status_code

post base

url = "http://..."
# 字典方式
data = {
    "name": "xxx",
    "email": "[email protected]"
}
# 元组方式
data = (('key1', 'value1'), ('key1', 'value2'))
r = requests.post(url=url, data=data)
print r.status_code

post json

url = "http://..."
data = {
    "name": "xxx",
    "email": "[email protected]"
}
# 定制请求头
# header 指定请求头为json格式
headers = {'Content-Type': 'application/json'}
# 方法1 data 传参,通过json.dumps 转化为json格式
r = requests.post(url=url, headers=headers, data=json.dumps(data))
# 方法2 json 传参(2.4.2版新增功能)
r = requests.post(url=url, json=data)
print r.status_code

delete

r = requests.request("DELETE", url, data="", headers=headers)

request参数

params = {"a": "xxx", "b": "xxx"}
url = "http://..."
# timeout 超时,设定秒数时间内停止等待响应,如果时间内没有应答,则抛出异常
r = requests.get(url, params=params, timeout=0.001)
# auth 身份认证
r = requests.get(url, params=params, auth=('username', 'password'))

响应内容

# 响应状态码 200 ok
print r.status_code
# requests.codes.ok:200 内置的状态码查询对象
print requests.codes.ok
# 抛出异常,当发送了一个错误请求时(当r.status_code=200时,返回None)
r.raise_for_status()
# 编码后的url,值为None的键不会被添加到URL中
print r.url
# r.text 之时,Requests 会使用其推测的文本编码
print r.encoding
# 返回 Request是会使用其推测的文本编码,可以使用r.encoding改变编码
print r.text
# 返回 二进制响应内容,requests会自动解码gzip,deflate传输编码的响应数据
print r.content
# json解码,如果解码失败,会抛出401(Unauthorized)异常
# 解码成功并不意味着响应成功,例如:http 500异常会被解码返回
print r.json()
# 将响应体的内容转化为json格式
json.loads(r.content)
# 响应头
print r.headers
# 响应头大小写不敏感,因此可以使用任意大小写方式访问响应头的数据
print r.headers['content-length']

你可能感兴趣的:(Python)