4

我正在尝试使用 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 的示例和我从这里找到的另一个示例,但结果相同

4

1 回答 1

0

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

正如您在此处看到的,您正在通过路径(第 92-105 行),当找不到任何字段来创建票证时,这实际上是默认错误路径。如果您通过下面的另一个分支(第 128-184 行),它只会实际创建票证。

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

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

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

于 2015-07-23T17:38:20.390 回答