python - 从服务器到服务器的发布请求不正确
问题描述
我有数据库服务器,我有一个 webhook 接收服务器。当我将/itgpalertadd
端点用于任何网站的 webhook 时,它可以工作。但是,当我尝试从我的 webhook 接收服务器向我的数据库服务器发出 POST 请求时,日志显示none
让我认为 json 不正确。
这是我用来尝试将 json 数据从local client
to发送到webhook server
to的测试客户端文件database server
测试客户端文件:
import requests
import json
webhook_url = 'http://127.0.0.1:5000/'
data = {"Password Trigger":"Password Updated","Password Name":"super fake emailk","Password Url":"https://conglomo.itglue.com/1316532/passwords/4585688","Organization Name":"conglomo Systems, Inc"}
r = requests.post(webhook_url, data=json.dumps(data), headers={'Content-Type': 'application/json'})
这将转到 webhook 服务器:
@app.route("/", methods=['POST'])
def itgluealertwebhook():
if request.method == 'POST':
json_payload = json.dumps(request.json, indent=1)
requestlink = requests.post(url = "http://127.0.0.1:5060/itgpsqdbadd",data = json_payload)
print(json_payload)
print(requestlink)
return json_payload
来自 webhook 服务器的结果:
{“密码触发器”:“密码更新”,“密码名称”:“超级假电子邮件”,“密码网址”:“https://alloysystems.itglue.com/1316532/passwords/4585688”,“组织名称”: “合金系统公司”} <响应 [200]>
但是,当它到达数据库服务器时,它会none
在日志中显示,而不是实际的 json 数据:
@app.route('/itgpsqdbadd', methods=['POST'])
def itgluewebhook():
if request.method == 'POST':
print(request.json)
requestj = request.json
f = open('flasklogs.txt', 'a')
f.write(str(request.json)+"\n")
sys.stdout = f
# sys.stderr = f
fullpasswordurl = json.dumps(requestj['Password Url'])
print("variable: " + fullpasswordurl)
if fullpasswordurl=='""':
print("we are going to delete this from the database as it has no url")
itgname_str = json.dumps(requestj['Password Name']).strip('"').strip("'")
print(itgname_str)
connecttosql = sqlite3.connect('companies.db')
connecttosql.row_factory = sqlite3.Row
connectioncursor = connecttosql.cursor()
connectioncursor.execute("DELETE FROM ITGluepds WHERE itgname LIKE ?", (itgname_str,))
connecttosql.commit()
print("Removed from database successfully!")
else:
print("we are going to insert or update this record as the url exists")
try:
itgname_str = json.dumps(requestj['Password Name']).strip('"').strip("'")
passwordurl_str = json.dumps(requestj['Password Url']).strip('"').strip("'")
itgpwid_str = str(passwordurl_str.split("/")[-1])
itgcid_str = str(passwordurl_str.split("/")[-3])
itglueapi = "ITG.8b4510ebdc267d8a0842f910da56c80b.aR7vulOblpgP-oeDAEiIpzeHU-027IOOuJ25XmJmWmV2vby-9QjbrjkwX7jiKktb"
header={"x-api-key" : itglueapi}
passwordlink = requests.get("https://api.itglue.com/organizations/" + itgcid_str + "/relationships/passwords/"+itgpwid_str, headers=header)
passwordata = passwordlink.json()
passwordusername = str(passwordata['data']['attributes']['username'])
itgcompany_str = str(passwordata['data']['attributes']['organization-name'])
connecttosql = sqlite3.connect('companies.db')
print("starting password update")
connectioncursor = connecttosql.cursor()
sql_insertval = """INSERT OR IGNORE INTO ITgluepds (pwid, itgname, itgusername, itgcompany, itglueid)
VALUES(?,?,?,?,?) ;"""
sql_insertvalU = """UPDATE OR IGNORE ITgluepds
SET pwid = ?, itgname = ?, itgusername = ?, itgcompany = ?, itglueid = ?;"""
data_tuple = (itgpwid_str, itgname_str, passwordusername, itgcompany_str, itgcid_str)
print(data_tuple)
connectioncursor.execute(sql_insertval, data_tuple)
connectioncursor.execute(sql_insertvalU, data_tuple)
connecttosql.commit()
print(itgcompany_str)
print(itgname_str)
except Exception as Argument:
logging.exception('Got exception on main handler')
raise
return 'success', 200
else:
f = open('flasklogs.txt', 'a')
sys.stdout = f
f.write("aborted")
abort(400)
如果有什么我想念的,请告诉我。
谢谢
解决方案
我想通了,虽然我还不确定为什么。
我更改了我的 webhook 接收器服务器以将其用于发布请求:
@app.route('/itgps', methods=['POST'])
def itgluealertwebhook():
if request.method == 'POST':
f = open('flasklogs.txt', 'a')
sys.stdout = f
json_payload = request.json
requestlink = requests.post(url = "http://127.0.0.1:5060/itgpsqdbadd",data = json.dumps(json_payload), headers={'Content-Type': 'application/json'})
print(json_payload)
print(requestlink)
return json_payload
基本上我json.dumps
在我的有效载荷上执行了该方法requests.post
推荐阅读
- python - 在 pandas 中使用 varchar 读取固定宽度的文本文件
- react-native - 无法使用 react-native-secure-key-store 保存密钥
- java - Java:使服务器在一定时间后停止侦听
- powershell - Powershell:无法在我的邮件中添加附件
- java - 如果仅在对象初始化期间给出内存,如何初始化类成员变量(实例变量)?
- c - 为什么 pthread_key 需要析构函数?
- java - 如何正确添加 keycloak 用户迁移提供程序?
- c# - 在 .NET Core 中对托管服务进行单元测试
- postgresql - Typeorm获取ID数组列的关系
- javascript - 是否有用于检查 cookie 自动删除的 JS 浏览器 API?