Python自动化--语言基础8--接口请求及封装
基于http协议,最常用的是GET和POST两种方法。
接口文档需要包含哪些信息:
接口名称
接口功能
接口地址
支持格式 json/xml
请求方式
请求示例
请求参数(是否必填、数据类型、传递参数格式)
返回参数说明
以典型的(一两个)参数做为判断是否请求通过(重点是看响应的信息判断)
一、GET
import requests
import json url = "http://v.juhe.cn/laohuangli/d"
para = {"key":"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","date":"2017-3-22"}
header ={} r = requests.get(url,params=para,headers= header) print('get请求获取的响应结果json类型',r.text)
print("get请求获取响应状态码",r.status_code)
print("get请求获取响应头",r.headers['Content-Type']) #响应的json数据转换为可被python识别的数据类型
json_r = r.json()
print(json_r)
二、POST
post请求有两种请求格式:
1、key-value的格式'Content-Type':'application/x-www-form-urlencoded'
2、标准json的格式:'Content-Type':'application/json'
#key-value
import requests
import json url = "http://v.juhe.cn/laohuangli/d"
para = {"key":"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","date":"2017-3-22"}
header ={} r = requests.post(url,data=para,headers= header) print('get请求获取的响应结果json类型',r.text)
print("get请求获取响应状态码",r.status_code)
print("get请求获取响应头",r.headers['Content-Type']) #响应的json数据转换为可被python识别的数据类型
json_r = r.json()
print(json_r)
#json
import requests
import json url = "http://v.juhe.cn/laohuangli/d"
para = {"key":"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","date":"2017-3-22"}
header ={}
#python数据类型转换为json类型(json.dumps())
para = json.dumps(para)
r = requests.post(url,data=para,headers= header) print('get请求获取的响应结果json类型',r.text)
print("get请求获取响应状态码",r.status_code)
print("get请求获取响应头",r.headers['Content-Type']) #响应的json数据转换为可被python识别的数据类型
json_r = r.json()
print(json_r)
三、把所有的请求封装在函数中
def get(url,para,headers):
try:
r = requests.get(url,params=para,headers=headers)
print("获取返回的状态码",r.status_code)
json_r = r.json()
print("json类型转化成python数据类型",json_r)
except BaseException as e:
print("请求失败!",str(e))
def post(url,para,headers):
try:
r = requests.post(url,data=para,headers=headers)
print("获取返回的状态码",r.status_code)
json_r = r.json()
print("json类型转化成python数据类型",json_r)
except BaseException as e:
print("请求失败!",str(e))
def post_json(url,para,headers):
try:
data = para
data = json.dumps(data) #python数据类型转化为json数据类型
r = requests.post(url,data=data,headers=headers)
print("获取返回的状态码",r.status_code)
json_r = r.json()
print("json转换为python数据类型:",json_r)
except BaseException as e:
print("请求失败!",str(e)) url = "http://v.juhe.cn/laohuangli/d"
para = {"key":"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","date":"2017-3-22"}
headers ={} get(url,para,headers)
post(url,para,headers)
post_json(url,para,headers)
四、把所有请求封装在一个对象里
class Webrequests:
def get(self,url,para,headers):
try:
r = requests.get(url,params=para,headers=headers)
print("获取返回的状态码",r.status_code)
json_r = r.json()
print("json类型转化成python数据类型",json_r)
except BaseException as e:
print("请求失败!",str(e))
def post(self,url,para,headers):
try:
r = requests.post(url,data=para,headers=headers)
print("获取返回的状态码",r.status_code)
json_r = r.json()
print("json类型转化成python数据类型",json_r)
except BaseException as e:
print("请求失败!",str(e))
def post_json(self,url,para,headers):
try:
data = para
data = json.dumps(data) #python数据类型转化为json数据类型
r = requests.post(url,data=data,headers=headers)
print("获取返回的状态码",r.status_code)
json_r = r.json()
print("json类型转化成python数据类型",json_r)
except BaseException as e:
print("请求失败!",str(e)) url = "http://v.juhe.cn/laohuangli/d"
para = {"key":"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","date":"2017-3-22"}
headers ={} q = Webrequests() q.get(url,para,headers)
q.post(url,para,headers)
q.post_json(url,para,headers)
Python自动化--语言基础8--接口请求及封装的更多相关文章
- Python自动化--语言基础7--操作日志、加密、发送邮件、线程、生产者消费者
1.操作日志 logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置日志级别等级CRITICAL > ERROR > WARNING > INFO & ...
- Python自动化--语言基础6--模块操作之re、MySQL、Excel
1.Python自有模块正则 import re # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None print(re.match("aaa ...
- Python自动化--语言基础5--面向对象、迭代器、range和切片的区分
面向对象 一.面向对象代码示例: 1 class Test(): #类的定义 2 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 3 def ...
- Python自动化--语言基础4--模块、文件读写、异常
模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...
- Python自动化--语言基础3--字典、函数、全局/局部变量
字典 dict1 = {'name':'han','age':18,'class':'first'} print(dict1.keys()) #打印所有的key值 print(dict1.values ...
- Python自动化--语言基础2--运算符、格式化输出、条件语句、循环语句、列表、元组
运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符 算术运算符 % 取模(余数) // 取相除的整数部分 / (5/2=2.5) 比较运算符 == 等于 ! ...
- python自动化--语言基础1--数据类型及类型转换
Python中核心的数据类型有哪些?变量(数字.字符串.元组.列表.字典) 什么是数据的不可变性?哪些数据类型具有不可变性数据的不可变是指数据不可更改,比如: a = ("abc" ...
- python自动化--语言基础五面向对象、迭代器、range和切片的区分
面向对象 一.面向对象简单介绍: class Test(): #类的定义 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 def __ini ...
- python自动化--语言基础四模块、文件读写、异常
模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...
随机推荐
- Effective Java 第三版——27. 消除非检查警告
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- hive下UDF函数的使用
1.编写函数 [java] view plaincopyprint?package com.example.hive.udf; import org.apache.hadoop.hive.ql. ...
- MySQL主从复制的配置
环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 主节点IP:192.168.1.205 主机名:edu-m ...
- nodejs http小爬虫
本课程用nodejs写一个http小爬虫,首先科普一下,爬虫就是把网上的网页代码给弄下来,然后纳为己用.目前最大的爬虫:百度快照等的. 下面直接上代码 示例一: var http = require( ...
- 把一个DIV放到另一个div右下角
父对象相对定位,子对象以父对象为参考点绝对定位:外层的div设置为相对定位,内层的div设置为绝对定位: <div id="box1"> <div id=&quo ...
- SQLServer导出数据表结构
SELECT (case when a.colorder=1 then d.name else '' end)表名, a.colorder 字段序号, a.name 字段名, (case when C ...
- CentOs下安装PHP扩展curl
服务器运行一段时间后,可能突然会需求添加某个扩展,如curl.pdo.xmlrpc等,这就需要在不重新编译Linux PHP的情况下独立添加扩展. 1.安装crul wget http://curl. ...
- 一次thinkphp框架 success跳转卡顿问题的解决
近期工作中遇到了一个奇怪的现象:thinkphp框架中一个控制器中执行success或者error跳转的时候,会卡10s甚至更久,而在其他控制器中测试却不会.于是开始着手调试,利用自定义的毫秒函数测试 ...
- 【转】三大UML建模工具Visio、Rational Rose、PowerDesign的区别
本文转自http://developer.51cto.com/art/201006/207993.htm UML建模工具相信大家有所了解,那么你对UML建模工具Visio .Rational Rose ...
- SSH反向连接及Autossh
参考文章 http://www.freeoa.net/osuport/netmanage/autossh-useage-refer_2831.html 接触Linux恐怕对SSH再熟悉不过了,还有sc ...