1 前言
web应用中经常见到,第一步尝试登陆;登录成功后,才能访问后续的接口。
此文,仅以python和curl的演示。
2 Python
import json
import urllib.request
import http.cookiejar
class HttpUtil(object):
def __init__(self):
cookie = http.cookiejar.MozillaCookieJar()
handler = urllib.request.HTTPCookieProcessor(cookie)
self.opener = urllib.request.build_opener(handler)
def api(self, **api_info):
parm = api_info.get("parm", None)
data = None
global rep_status
global rep_data
# headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
headers = {"Content-type": "application/json"}
if parm:
# data = urllib.parse.urlencode(api_info["parm"]).encode('utf-8')
data = json.dumps(api_info["parm"]).encode('utf-8')
if "headers" in api_info and api_info["headers"] != "":
headers = api_info["headers"]
try:
request = urllib.request.Request(api_info["url"], data=data, headers=headers, method=api_info["method"])
rep = self.opener.open(request)
rep_status = rep.status
rep_data = json.loads(rep.read())
except urllib.error.URLError as e:
rep_status = "URLError"
rep_data = e
return rep_status, rep_data
if __name__ == '__main__':
http_util = HttpUtil()
# first login
rep_status, rep_data = http_util.api(url=url1, parm=parm1, method="POST")
# 保存cookie后,可以访问其他接口了
rep_status, rep_data = http_util.api(url=url2, parm=parm2, method="POST")
print(rep_data)
3 curl
curl http://url:port/api/v1/login/ --cookie-jar ./login_cookie.txt -X POST -H "Content-Type:application/json" -d '{"username":"username","password":"passord"}'
curl http://url:port/api/v1/submit/ --cookie ./login_cookie.txt -X POST -H "Content-Type:application/json" -d '{"test":"test"}'
转载于:https://www.cnblogs.com/flypig258/p/11376774.html