我正在针对特定用途开发票务机器人。我需要将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”作为文本的一部分。
这里:
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规范,您可能还会遇到其他错误。
也许您可以尝试将data=data
替换为str(data)
。
不要忘记json.dumps(data)
。