You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Flask调用ManageEngine SDP API提交工单POST请求结构咨询

问题修正方案

核心错误点

  • 请求体结构不符合要求:接口规定x-www-form-urlencoded格式的请求体仅需携带一个参数:key为input_data,value为工单信息序列化后的JSON字符串。你的代码直接将工单嵌套字典传给data参数,requests会自动将字典的所有键拆解为独立的form参数,和接口要求完全不符。
  • 鉴权头格式错误:官方要求鉴权头的前缀为Zoho-Oauthtoken,而非你代码中写的Bearer。
  • 变量取值错误:你已通过OAuth2Session将凭证存储在session['oauth_token']中,但代码构造请求头时使用的token变量未定义来源,大概率取值错误。
  • 参数位置错误:你将input_data拼接在URL的查询参数位置,而接口要求该参数放在POST请求体中。

正确代码示例

import json
import requests
from flask import session

@app.route("/log", methods=["GET"])
def log():
    """Fetching a protected resource using an OAuth 2 token.
    """
    # 取到正确的oauth token
    oauth_token = session['oauth_token']['access_token']
    headers = {
        "Authorization": f"Zoho-Oauthtoken {oauth_token}",
        "Accept": "application/vnd.manageengine.sdp.v3+json",
        "Content-Type": "application/x-www-form-urlencoded"
    }

    # 构造工单信息字典
    ticket_data = {
        "request": {
            "subject": "New Incident",
            "mode": {
                "name": "E-Mail",
            },
            "group": {
                "name": "Incident"
            },
            "requester": {
                "name": "Sarah Curtis Test"
            },
            "status": {
                "name": "Open",
            },
            "template": {
                "name": "Report an Incident"
            },
            "request_type": {
                "name": "Incident",
            },
            "description": "This is a test. please ignore",
            "category": {
                "name": "Incident"
            }
        }
    }
    # 序列化为JSON字符串,作为input_data的值
    post_data = {
        "input_data": json.dumps(ticket_data)
    }
    # 发送请求,注意URL不要带input_data参数
    resp = requests.post(
        'https://sdpondemand.manageengine.eu/api/v3/requests',
        data=post_data,
        headers=headers
    )
    # 打印响应信息排查问题,不需要可以删掉
    print(resp.status_code, resp.text)
    return "请求完成"

调试建议

你可以通过打印请求的响应状态码和响应内容,直接获取接口返回的错误提示,不需要申请服务端日志权限。常见的报错会直接告诉你是鉴权失败、参数缺失还是字段格式错误。

内容的提问来源于stack exchange,提问作者sc-leeds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 17:24:02