1、方式一,获取session后。存储起来。下次调用时候,传递一个session植即可

#/bin/python
# -*- coding: utf-8 -*-
import requests
from urllib import parse class HarborAapi(object):
def __init__(self,url,username,passwd):
'''
@Author: xiajinqi
:param url:
:param username:
:param passwd:
'''
print("构造函数")
self.url = url
self.username= username
self.passwd=passwd
self.session_id_key = "sid" def login_get_session(self):
print("获取session")
header={
'User-Agent':'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36','Content-Type': 'application/x-www-form-urlencoded'
}
req_url='%s/c/login'%(self.url)
req_dict={
'principal': self.username,
'password': self.passwd
}
req_data=parse.urlencode(req_dict)
try :
res = requests.post(req_url, headers=header, data=req_data)
print(res.text)
if res.status_code==200 : ### 200位数字不可加"
self.session_id = res.cookies.get("sid")
return self.session_id
except :
raise Exception("login error,please check your account info!" ) def get_projects(self):
print("获取工程")
header = {
'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36',
'Content-Type': 'application/json'
}
req_url = '%s/api/projects?page=1&page_size=15' % (self.url)
req_dict={
'page': '1',
'page_size': '15'
} r = requests.get(req_url, cookies={'sid':self.login_get_session()})
print(r.text)
print(r.status_code) ### cookies={self.session_id_key: self.session_id}
def logout(self):
r=requests.get('%s/c/logout' % (self.url),cookies={'sid': self.session_id})
print(r.text) harbor=HarborAapi('http://xx.xxxxx.com','test','00000')
print(harbor.login_get_session())
harbor.get_projects()

方式二通过session 方式发送请求

#/bin/python
# -*- coding: utf-8 -*-
import requests
from urllib import parse class HarborAapi(object):
def __init__(self,url,username,passwd):
'''
@Author: xiajinqi
:param url:
:param username:
:param passwd:
'''
print("构造函数")
self.url = url
self.username= username
self.passwd=passwd
self.session_id_key = "sid" def login_get_session(self):
print("获取session") header={
'User-Agent':'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36','Content-Type': 'application/x-www-form-urlencoded'
}
req_url='%s/c/login'%(self.url)
req_dict={
'principal': self.username,
'password': self.passwd
}
req_data=parse.urlencode(req_dict)
try :
s = requests.Session() ###通过session方式请求。会自动保留cookie信息
res = s.post(req_url, headers=header, data=req_data)
print(res.text)
if res.status_code==200 : ### 200位数字不可加"
self.session=s
# self.session_id = res.cookies.get("sid")
print(s)
return s #####s中存在cookie植
except :
raise Exception("login error,please check your account info!" ) def get_projects(self):
print("获取工程")
header = {
'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36',
'Content-Type': 'application/json'
}
req_url = '%s/api/projects?page=1&page_size=15' % (self.url)
req_dict={
'page': '1',
'page_size': '15'
} r = self.session.get(req_url)
print(r.text)
print(r.status_code) ### cookies={self.session_id_key: self.session_id}
def logout(self):
r=requests.get('%s/c/logout' % (self.url),cookies={'sid': self.session_id})
print(r.text) harbor=HarborAapi('https:/******','test','1234')
harbor.login_get_session()
harbor.get_projects()

### 返回session对象  

构造函数
获取session


<requests.sessions.Session object at 0x0000000003F0BE80>

 

方式三:通过auth  和session 相互结合的模式来实现,跨路径访问

#/bin/python
# -*- coding: utf-8 -*-
import requests
from urllib import parse
from requests.auth import HTTPBasicAuth class HarborAapi(object):
def __init__(self,url,auth):
'''
@Author: xiajinqi
:param url:
'''
print("构造函数")
self.url = url
self.auth=auth
self.session_id_key = "sid" def setting(self):
###定义会话保持s并且设置s的auth 属性
self.session=requests.session()
self.session.auth=self.auth def get_projects(self):
print("获取工程")
header = {
'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36',
'Content-Type': 'application/json'
}
#https://harbor.yylending.com:8443/api/projects?page=1&page_size=15
req_url = '%s/api/projects?page=1&page_size=15' % (self.url)
req_dict={
'page': '1',
'page_size': '15'
}
req_data=parse.urlencode(req_dict)
r = self.session.get(req_url,data=req_dict,headers=header)
print(r.text)
print(r.status_code) auth = HTTPBasicAuth('att','12345') harbor=HarborAapi('https://xxx.xxxx.com:44',auth)
harbor.setting() ###
harbor.get_projects()

Python post中session和auth 的三种方法的更多相关文章

  1. PHP 中Session 反序列化机制的三种方法

    �php.ini中存在三项配置项: session.save_path="" --设置session的存储路径 session.save_handler=""- ...

  2. Java中获取键盘输入值的三种方法

    Java中获取键盘输入值的三种方法     Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...

  3. 【转载】取得系统中网卡MAC地址的三种方法

    From:http://blog.csdn.net/zhangting1987/article/details/2732135 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址 ...

  4. (六)C#中判断空字符串的三种方法性能分析

    三种方法分别是: string a=""; 1.if(a=="") 2.if(a==string.Empty) 3.if(a.Length==0) 三种方法是等 ...

  5. Java中实现线程同步的三种方法

    实现同步的三种方法 多线程共享数据时,会发生线程不安全的情况,多线程共享数据必须同步. 实现同步的三种方法: 使用同步代码块 使用同步方法 使用互斥锁ReetrantLock(更灵活的代码控制) 代码 ...

  6. Linux中创建Daemon进程的三种方法

    什么是daemon进程? Unix/Linux中的daemon进程类似于Windows中的后台服务进程,一直在后台运行运行,例如http服务进程nginx,ssh服务进程sshd等.注意,其英文拼写为 ...

  7. Centos8(Liunx) 中安装PHP7.4 的三种方法和删除它的三种方法

    编译安装 Centos8下PHP源码编译和通过yum安装的区别和以后的选择 其实这两种方法各有千秋: yum安装: 从yum安装来说吧,yum相当于是自动化帮你安装,你不用管软件的依赖关系,在yum安 ...

  8. cocos2dx中创建标签CCLabel的三种方法及特点

    创建标签的三种方式:1.CCLabelTTF     (True Type Font,又叫本地字体)这是最简单,也是最常用的方式,不依赖于资源文件,也不依赖于某个系统,所指定的字体如果系统没有,则会提 ...

  9. Java入门:Java中获取键盘输入值的三种方法

    Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代 ...

随机推荐

  1. 线程终止的四种方式,interrupt 方法使用的简单介绍。

    一 正常结束. package com.aaa.threaddemo; /* 一 终止线程的四种方式? * 程序运行结束,线程终止. * */ public class ThreadTerminati ...

  2. JDBC 连接DRUID 连接池!

    一.1.创建一个floder目录,[名称lib] 2. 导入mysql.jar包和 druid.jar 包.---------->bulid path 二.创建  sourcefolder 目录 ...

  3. JAVA异常与异常处理详解【转】

    感谢!!!原文地址:https://www.cnblogs.com/knightsu/p/7114914.html 一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在ja ...

  4. <select><option></option></select> 操作

    转载请注明来源:https://www.cnblogs.com/hookjc/ function FlySwapSelect(s1,s2,myvars,calldbclick){ var mSel1= ...

  5. 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)

    Unicode与UTF-8互转(C语言实现):http://blog.csdn.net/tge7618291/article/details/7599902 汉字 Unicode 编码范围:http: ...

  6. UIView的常见方法

    - (void)addSubview:(UIView *)view; 添加一个子控件view - (void)removeFromSuperview; 将自己从父控件中移除 - (UIView *)v ...

  7. 增删改查简单的sql语句

    insert INSERT   INTO    t_stu   (name,age)  VALUES  ('wang',12) INSERT INTO    t_stu   VALUES(NULL,' ...

  8. Ubuntu18配置静态IP地址

    1. 记住网卡名称 ifconfig 2. 记住网关地址 netstat -rn 3. 配置静态IP 注意:Ubuntu18固定IP的方式跟Ubuntu18之前版本的的配置方式不同, Ubuntu18 ...

  9. 微服务如何聚合 API 文档?这波秀~

    今天这篇文章介绍一下微服务如何聚合Swagger实现接口文档管理. 文章目录如下: 为什么需要聚合? 微服务模块众多,如果不聚合文档,则访问每个服务的API文档都需要单独访问一个Swagger UI界 ...

  10. D介绍-概述

    INTRODUCTION THE SELENIUM PROJECT AND TOOLS Selenium controls web browsers Selenium is many things, ...