通过Python调用禅道API

news2024/11/24 19:05:55

禅道API接口,非REST接口

调试版本:11.3

百度出来的100%都用不了(本篇除外...)。于是自己修改了网上代码,先get session,再post登录,最后调用产品列表验证,实测通过。

 1 import requests
 2 import json
 3 
 4 class zentao_cli(object):
 5 
 6     session = None   #用于实现单例类,避免多次申请sessionID
 7     sid = None
 8 
 9     def __init__(self, url, account, password, override = False):
10         self.url = url
11         self.account = account
12         self.password = password
13         self.session_override = override
14         self.pages = {
15             "sid": "/api-getSessionID.json",    #获取sid的接口
16             "login": "/user-login.json?zentaosid={0}",  #登录的接口
17             "get_product_list": "/product-index-no.json",
18         }
19         self.s = None
20         self.sid = None
21 
22     def req_get(self, url):
23         #请求并返回结果
24         web = requests.get(url)
25         if web.status_code == 200:
26             resp = json.loads(web.content)
27             if resp.get("status") == "success":
28                 return True, resp
29             else:
30                 return False, resp
31 
32     def req_post(self, url, body):
33         #请求并返回结果
34         res = requests.post(url=url, data=body)
35         if res.status_code == 200:
36             resp = json.loads(res.content)
37             if resp.get("status") == "success":
38                 return True, resp
39             else:
40                 return False, resp
41 
42     def login(self):
43         if self.s is None:
44             if not self.session_override and zentao_cli.session is not None:
45                     self.s = zentao_cli.session
46                     self.sid = zentao_cli.sid
47             else:
48                 #新建会话
49                 self.s = requests.session()
50                 res, resp = self.req_get(self.url.rstrip("/") + self.pages["sid"])
51                 if res:
52                     print("获取sessionID成功")
53                     self.sid = json.loads(resp["data"])["sessionID"]
54                     zentao_cli.sid = self.sid
55                     body = {'account': self.account, 'password': self.password, 'keepLogin[]': 'on', 'referer':self.url.rstrip("/") + '/my/'}
56                     login_res, login_resp = self.req_post(self.url.rstrip("/") + self.pages["login"].format(self.sid), body)
57                     if login_res:
58                         print("登录成功")
59                         zentao_cli.session = self.s
60 
61 
62     def get_product_list(self):
63         req_url = self.url.rstrip("/") + self.pages["get_product_list"]
64         res, resp = self.req_get(req_url + "?zentaosid=" + self.sid)
65         if res:
66             data = resp['data']
67             products = json.loads(data)['products']
68             return products.keys(), products.values()
69 
70 
71 if __name__ == "__main__":
72     cli = zentao_cli("http://xxx/zentao", "xxx", "xxx")
73     cli.login()
74     print(cli.get_product_list())

 以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了

各位想获取资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/825576.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP 物料主数据 字段 配额安排 变化

ECC版本 字段‘配额安排’在物料主数据中,可选使用范围 S4新版本 字段‘配额安排’已经隐藏,后台字段去掉了,屏幕字段设置了不可见,系统默认选择了4

流程管理软件:优化工作流程的数字化解决方案

有这么多任务需要跟踪,一个优秀的工作流系统对于项目经理完成他们的工作至关重要。通过使用工作流软件,项目经理可以避免诸如浪费时间和资源、过度风险和损害最终结果等陷阱。他们可以放心,他们的工作将按照正确的顺序完成,并在此…

文件管理:按名称批量归类,简化整理任务!

在数字化时代,我们每天都会面对海量的文件,从文档、图片、视频到音频,各种各样的文件都在我们的电脑中汇聚。然而,你是否曾为找不到需要的文件而烦恼,或者为整理大量文件而头疼?为了帮助大家解决这些问题&a…

P3368 【模板】树状数组 2 (树状数组小进阶)(内附封面)

【模板】树状数组 2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 x x x; 求出某一个数的值。 输入格式 第一行包含两个整数 N N N、 M M M,分别表示该数列数字的个数和操作的总…

Jenkins 自动化部署实例讲解,另附安装教程!

【2023】Jenkins入门与安装_jenkins最新版本_丶重明的博客-CSDN博客 也可以结合这个互补看 前言 你平常在做自己的项目时,是否有过部署项目太麻烦的想法?如果你是单体项目,可能没什么感触,但如果你是微服务项目,相…

Vue-----package.json

前言 package.json是Node.js应用程序中的配置文件,它在Vue项目中同样非常重要。在Vue中, package.json文件包含了有关你的应用程序的重要信息,如版本号、依赖项、脚本等。 文件结构 package.json文件通常包含以下内容: {"n…

【Matter】基于Ubuntu 22.04 交叉编译chip-tool

编译工程之际,记录一下编译过程,免得后续遗忘,总结下来chip-tool 交叉编译涉及到的知识点: 需要了解如何支持交叉编译,基于GN编译框架需要理解应用库如何交叉编译,理解pkg-config的使用meson 编译&#xf…

Activiity跳转startActivity源码分析Activity启动流程(上)

1.Activity的startActivity 2.也是调用了Activity的startActivityForResult 3.实际还是startActivityForResult 带option的方法,只不过null传过去的 4.接着调用了 Instrumentation的execStartActivity方法 5.然后是IActivityManager的startActivity 6.IActivity…

WebDAV之π-Disk派盘 + Mountain Duck

Mountain Duck是来自国外的一款方便实用,功能强大的云存储空间本地管理工具。它可以帮助我们在windows电脑上将远程 FTP 空间、WebDAV、Swift、S3、Azure、Rackspace、Google Cloud 等云存储服务转入本地进行管理,使用任何应用程序即可打开远程文件,并在本地盘上工作。你可以…

CUDA_CHECK(cudaFree(...))报错CUDA error 1

GPT-3.5太好用了,报错情况如下: 总结一下, 在使用cudaFree释放之前cudaMalloc()分配的GPU内存时,报错cuda error,最有可能的几个原因就是: 试图释放已经释放的gpu内存,在调用cudafree()时确保没…

小程序自定义tabBar+Vant weapp

1.构建npm,安装Vant weapp: 1)根目录下 ,初始化生成依赖文件package.json npm init -y 2)安装vant # 通过 npm 安装 npm i vant/weapp -S --production 3)修改 package.json 文件 开发者工具创建的项…

c++11 标准模板(STL)(std::basic_ifstream)(四)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ifstream : public std::basic_istream<CharT, Traits> 类模板 basic_ifstream 实现文件流上的高层输入操作。它将 std::basic_istream…

linux学习笔记(2)----汇编LED灯实验

MX6ULL 的 IO IO的复用功能 这里的只使用了低五位&#xff0c;用来配置io口&#xff0c;其中bit0~bit3(MUX_MODE)就是设置 GPIO1_IO00 的复用功能的&#xff0c;GPIO1_IO00 一共可以复用为 9种功能 IO&#xff0c;分别对应 ALT0~ALT8。每种对应了不同的功能 io的属性配置 HY…

JDBC的书写

文章目录 基本概念操作数据库方式一&#xff08;不建议使用这种查询&#xff0c;可以sql注入&#xff09;读取properties文件 事务转账示例 获取id连接池 基本概念 持久化:把数据放在磁盘上&#xff0c;断电后还是有数据。使用execute 执行增删改返回false,查返回true 操作数…

map和set的使用(基于STL库)

前言 map和set是STL模板库中重要的关联式容器&#xff0c;与序列式容器不同的是&#xff0c;关联式容器里面存储的是<key,value>结构的键值对&#xff0c;在数据检索时比序列式容器效率更高。让我们一起来看看吧&#xff01; 目录 1.set 1.1键值对 1.2set的介绍 1.3set…

点击编辑变完成

<template><div><button click"dialogshowtrue">添加部门</button><div>部门列表</div><el-table ref"multipleTable" :data"form" tooltip-effect"dark" style"width: 100%">&l…

roop 视频换脸

roop: one click face swap. 只用一张人脸图片&#xff0c;就能完成视频换脸。 项目地址&#xff1a; https://github.com/s0md3v/roopColab 部署&#xff1a; https://github.com/dream80/roop_colab 本文是本地部署的实践记录。 环境基础 OS: Ubuntu 22.04.2 LTSKernel: 5…

解决SVN或GIT忽略提交文件的问题

背景 使用IDEA 的SVN插件提交文件是总是会提交一些不需要提交的文件; 我们可以通过一些简单设置忽略这些文件。 git 在项目根目录新建文本文件&#xff0c;修改后缀为.gitignore 文件中添加内容 *.iml .project .gradle/ .idea/ target/ build/ .vscode/ .settings/ .facto…

Day51 算法记录| 动态规划 18(单调栈)

单调栈 739. 每日温度496.下一个更大元素 I503. 下一个更大元素 II42. 接雨水84. 柱状图中最大的矩形 单调栈&#xff1a;找最近的比他大的值 最近大的值&#xff1a;需要一个单调递减的栈&#xff08;大于栈顶元素就弹出&#xff09; 最近最小值&#xff1a;单调递减栈 方向&a…

【大数据】-- docker 启动 mysql 5.7,开启 binlog

1.说明 mysql binlog&#xff1a;二进制日志文件。它有两个作用&#xff0c;一是增量备份&#xff0c;即只备份新增的内容&#xff0c;可以用于恢复数据&#xff1b;二是用于主从复制等&#xff0c;即主节点维护了一个binlog日志文件&#xff0c;从节点从binlog中同步数据。 …