我正在尝试使用 python-rtkit 在 RT 中创建一个票证,它提供了一个 200 OK 并返回了一个实际上没有在 RT 中创建的空票证的信息,另外我直接尝试使用请求模块,并且具有相同的结果也是如此。

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

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', '')]]

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

最佳答案

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

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

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

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

我还会查看您提交的请求版本,但我恐怕时间不够用了。

10-08 13:40