python - 使用 python-rtkit 创建票证

标签 python rest python-2.7 rt

我正在尝试使用 python-rtkit 在 RT 中创建票证,它给出 200 OK 并返回空票证的信息,该信息实际上并未在 RT 中创建,另外我直接尝试了使用 requests 模块,结果也是一样的。

我的代码尝试使用请求模块

post_data = """
id: ticket/new
Queue: myqueue
Subject: Test Ticket creation in RT with Python
Text: Wow ticket is created :-D . 
"""
payload = {'content':post_data}
ticket_creation_reusult = requests.post("http://rt.domain.com/REST/1.0/ticket/new"+"user="+user+"&pass="+pas, payload)

我的代码试图使用请求 python-rtkit,

content = {
    'content': {
        'Queue': 1,#'', 2
        'Subject': 'New Ticket',
        'Text': 'My useless\ntext on\nthree lines.',
    }
}
try:
    response = resource.post(path='ticket/new', payload=content)
    logger.info(response.parsed)
except RTResourceError as e:
    logger.error(e.response.status_int)
    logger.error(e.response.status)
    logger.error(e.response.parsed)

输出:

[DEBUG] POST ticket/new
[DEBUG] {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8','Accept': 'text/plain'}
[DEBUG] 'content=Queue: 1\nText:My+useless%0A+text+on%0A+three+lines.\nSubject: New Ticket'
[INFO] POST
[INFO] http://nocrt.domain.com/REST/1.0/ticket/new
[DEBUG] HTTP_STATUS: 200 OK
[DEBUG] 'RT/4.2.9 200 Ok\n\n# Required: id, Queue\n\nid: ticket/new\nQueue:General\nRequestor: svc_nocrt\nSubject: \nCc:\nAdminCc:\nOwner: \nStatus:new\nPriority: 5\nInitialPriority:5\nFinalPriority: 1\nTimeEstimated: 0\nStarts: 2015-07-2014:20:07\nDue: 2015-07-27 14:20:07\nAttachment: \nText: \n\n'
[DEBUG] RESOURCE_STATUS: 200 Ok
[INFO] [[('id', 'ticket/new'), ('Queue', 'General'), ('Requestor','svc_nocrt'), ('Subject', ''), ('Cc', ''), ('AdminCc', ''),('Owner', ''), ('Status', 'new'), ('Priority', '5'), ('InitialPriority', '5'),('FinalPriority', '1'), ('TimeEstimated', '0'), ('Starts', '2015-07-2014:20:07'), ('Due', '2015-07-27 14:20:07'), ('Attachment', ''), ('Text', '')]]
[INFO] [[('id', 'ticket/new'), ('Queue', 'General'), ('Requestor','svc_nocrt'), ('Subject', ''), ('Cc', ''), ('AdminCc', ''),('Owner', ''), ('Status', 'new'), ('Priority', '5'), ('InitialPriority', '5'),('FinalPriority', '1'),('TimeEstimated', '0'), ('Starts', '2015-07-2014:20:07'),('Due', '2015-07-27 14:20:07'), ('Attachment', ''), ('Text', '')]]

看起来它正在创建一张空票;但网络界面中没有显示任何内容,这些是 python-rtkit 的示例和我从 here 中找到的另一个示例但这给出了相同的结果

最佳答案

与您的预期相反,这实际上是一条错误消息。

如你所见here您正在通过路径(第 92-105 行),当它找不到任何字段来创建工单时,这实际上是默认错误路径。如果您通过此下方的其他分支(第 128-184 行),它只会实际创建票证。

问题似乎是您的服务器实际上根本没有获取您的内容字段。您的 rtkit 客户端代码看起来像是直接来自 rtkit docs所以应该是正确的。因此,我不得不猜测您的 RTResource 对象的构造有问题,或者在您的客户端和服务器之间过滤了您的请求。

我怀疑可能是使用了多行文本。也许这些行没有被正确编码,所以你的服务器拒绝了发布的数据?您可以尝试通过将其改为更简单的文本来证明这一点。

我还会查看您提交的请求版本,但我恐怕已经没时间了。

关于python - 使用 python-rtkit 创建票证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31519116/

相关文章:

python - 使用 WSGI 创建动态图像,不涉及文件

python - Borg 模式在两个不同模块中使用时的意外行为

python - 检查 python 2.6 中 deque 的 maxlen

node.js - 从服务器获取 json 数据后尝试将其呈现给客户端,但仅显示第一个元素

javascript - 如何显示从二维数组的 API 调用中获取的数据

python - 我无法安装 Gevent

python - 如何获取正在运行的 Python 脚本的路径?

java - 如何确保 Java Spring boot 中的 REST Http 请求时间不超过 15 秒

python - Python Flask:获取和发布方法的不同render_template可能吗?

python - 如何使用 python 在文件中的搜索模式的下一行插入字符串?