002 python接口 post请求
/* 时间:2018/08/23 功能:post请求 目录: 一: post请求 - 无参 1 无参 二: post请求 - url 1 url传参 - url 2 url传参 - params 三: post请求 - body 1 body传参 - json
2 body传参 - application/x-www-form-urlencoded(登录禅道)
四: 登录判断 - 正则匹配
1 成功登录
2 失败登录
*/
一: post请求
1 无参
1 : 访问网站: https://www.cnblogs.com/huafan。
2 : 浏览器访问没有问题。
1 : 先使用fiddler测试。
2 : 请求方式 - post; url - https://www.cnblogs.com/huafan。
3 : 点击"Execute"。
1 : 查看请求,返回数据没有问题。
1 : python代码请求。
# coding:utf-8
import requests
import urllib3
urllib3.disable_warnings() # 忽略警告
url = "https://www.cnblogs.com/huafan"
r = requests.post(url, verify = False)
print(r.text)
2 : 查看返回结果,和Fiddler一样,也是没有问题。
二: post请求 - url
1 url传参 - url
1 : 访问网址:https://www.juhe.cn/docs/api/id/166 ,使用第三方提供的接口。
1 : 使用浏览器测试一下,url : http://japi.juhe.cn/qqevaluate/qq?key=appKey&qq=qq。
2 : 可以看到浏览器显示,服务端返回数据。
1 : 先使用fiddler测试。
2 : 请求方式 - post; url - http://japi.juhe.cn/qqevaluate/qq?key=appKey&qq=qq。
3 : 点击"Execute"。
1 : 查看请求,返回数据没有问题。
1 : python代码请求。
# coding:utf-8
import requests
import urllib3
urllib3.disable_warnings() # 忽略警告
url = "http://japi.juhe.cn/qqevaluate/qq?key=8dbee1fcd8627fb6699bce7b986adc45&qq=1812436356"
r = requests.post(url, verify = False)
print(r.status_code) # 状态码
print(r.headers) # 头部
print(r.text) # 正文
2 : 查看返回结果,返回数据没有问题。
2 url传参 - params
1 : python代码请求。
# coding:utf-8
import requests
import urllib3
urllib3.disable_warnings() # 忽略警告
url = "http://japi.juhe.cn/qqevaluate/qq"
params = {
"key" : "8dbee1fcd8627fb6699bce7b986adc45",
"qq" : "1812436356"
}
r = requests.post(url, params = params, verify = False)
print(r.status_code) # 状态码
print(r.headers) # 头部
print(r.text) # 正文
2 : 查看返回结果,返回数据没有问题。
三: post请求 - body
1 body传参 - json
(暂无)
2 body传参 - application/x-www-form-urlencoded(登录禅道)
1 : 登录禅道,输入用户名和密码。
2 : 勾选"保持登录",点击"登录"。
1 : 点击Raw,查看刚才请求。
1 : 点击"WebForms",查看请求参数。
2 : 查看登录成功后返回数据。
1 : python代码请求。
# coding:utf-8
import requests
import urllib3
urllib3.disable_warnings() # 忽略警告
# 禅道登录
url = "http://127.0.0.1/zentao/user-login.html"
body = {
"account": "admin",
"password": "e10adc3949ba59abbe56e057f20f883e",
"keepLogin[]": "on",
"referer": "/zentao/my.html"
}
r = requests.post(url,data = body)
print(r.status_code)
print(r.text)
2 : 查看返回结果,和Fiddler一样。
四: 登录判断 - 正则匹配
1 成功登录
1 : python代码请求
# coding:utf-8
import requests
import re
# 禅道登录
url = "http://127.0.0.1/zentao/user-login.htm"
body = {
"account": "admin",
"password": "e10adc3949ba59abbe56e057f20f883e",
"keepLogin[]": "on",
"referer": "/zentao/my.html"
}
r = requests.post(url, data = body)
print(r.status_code)
print(r.content.decode("utf-8")) # 中文解码
try:
# 正则提取
res = r.content.decode("utf-8") # 获取中文字符串
result = re.findall("alert\(\'(.+?)\'\)", res) # 正则匹配
print(result[0]) # 取list第0个
except:
print("登录成功 ")
2 : 查看请求结果,数据正确。
2 失败登录
1 : 登录禅道,输入用户名和错误的密码。
2 : 勾选"保持登录",点击"登录",弹出错误提示信息。
1 : 查看fiddler请求,返回数据有错误提示信息。
1 : python代码请求
# coding:utf-8
import requests
import re
# 禅道登录
url = "http://127.0.0.1/zentao/user-login.htm"
body = {
"account": "admin",
"password": "123456789",
"keepLogin[]": "on",
"referer": "/zentao/my.html"
}
r = requests.post(url, data = body)
print(r.status_code)
print(r.content.decode("utf-8")) # 中文解码
try:
# 正则提取
res = r.content.decode("utf-8") # 获取中文字符串
result = re.findall("alert\(\'(.+?)\'\)", res) # 正则匹配
print(result[0]) # 取list第0个
except:
print("登录成功 ")
2 : 查看请求结果,数据正确。