需要发送字符串值非常长的JSON发布请求

问题描述 投票:0回答:2

我正在针对特定用途开发票务机器人。我需要将POST请求发送到Rundeck服务器,并且在其中一个数据字段中,有一封(非常非常长的)来自电子邮件正文的文本字符串。

此POST请求每次都会从Rundeck返回错误。我正在使用Python进行编码,并使用“请求”模块进行此类请求。

邮寄示例:

data =  {"options":{
            "solicitant":"NAME.NAME.NAME",
            "emailSolicitant":"[email protected]",
            "client":"CLIENT NAME",
            "subject":"Subject from the mail, this is working ok.",
            "body":"**HERE GOES THE LONG \n LONG \n LONG \n LONG BODY OF THE MESSAGE**",
          }
         }

我从RUNDECK中获取错误:

File "/path/to/a/shell/script.sh", line 18
    body = 'HERE GOES THE LONG
                             ^
    SyntaxError: EOL while scanning string literal
    Failed: NonZeroResultCode: Remote command failed with exit status 1

我如何进行邮寄请求

requestJob = requests.post('https://myrundeck.tld/api/31/job/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/run', headers=headers, data=str(data))

IMO似乎不接受“ \ n”作为文本的一部分。

python json post request rundeck
2个回答
0
投票

这里:

requestJob = requests.post(
    'https://myrundeck.tld/api/31/job/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/run',
    headers=headers, 
    data=str(data)
    )

str(data)是您的问题-requests.post() expects a dict here,所以只需传递dict

请注意,根据您的API规范,您可能还会遇到其他错误。


0
投票

也许您可以尝试将data=data替换为str(data)

不要忘记json.dumps(data)

© www.soinside.com 2019 - 2024. All rights reserved.