gpt4 book ai didi

python - 如何使用 suds 通过 getRecords 搜索 servicenow 中的日期时间范围?

转载 作者:太空宇宙 更新时间:2023-11-03 17:53:53 26 4
gpt4 key购买 nike

我正在尝试使用 suds 执行 Service Now 查询,但我不知道如何指定日期范围。这是我的代码,它用于返回具有确切日期的记录:

from suds.client import Client

URL = 'https://blah.service-now.com/change_request.do?WSDL'
USERNAME = "blah"
PASSWORD = "blah"

client = Client(URL, username=USERNAME, password=PASSWORD)
result = client.service.getRecords(start_date = "2015-02-03 12:00:00")

print result

打印结果为我提供了一条与确切日期时间匹配的记录。

当我尝试 start_date >= 或 start_date => 或 start_date > 时,他们都说“无效语法”或“NameError:名称'start_date'未定义”。

如何“获取记录”一段时间范围?

最佳答案

请记住,您基本上只是使用肥皂水来构建 SOAP 有效负载。它有助于退后一步并确定获得所需响应所需的 SOAP 请求。

根据 WSDL,start_date 字段接受单个参数,其行为类似于 blah=foo,因此无法在该参数中指定范围:

<xsd:element maxOccurs="1" minOccurs="0" name="start_date" type="xsd:string"/>

您可能想要的是特殊的“__encoded_query”参数,该参数接受编码的查询字符串,您可以使用 ServiceNow Web 应用程序中的过滤器构建器 UI 构建该字符串:

<xsd:element maxOccurs="1" minOccurs="0" name="__encoded_query" type="xsd:string"/>

假设您想要查询开始日期在 2014 年 10 月之内的所有 Change_request 记录。转到目标 ServiceNow 实例(或者任何一个,实际上,因为编码的查询将是相同的),并在/change_request_list.do 上构建过滤器: filter UI

现在,右键单击该蓝色过滤器并选择“复制查询”以获取编码的查询: enter image description here

这是我生成的编码查询:

start_dateBETWEENjavascript:gs.dateGenerate('2014-10-01','00:00:00')@javascript:gs.dateGenerate('2014-10-31','23:59:59')

现在,将其作为 __encoded_query 参数传递,负载如下所示:

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<getRecords xmlns="http://www.service-now.com/change_request">
<__encoded_query xmlns="">start_dateBETWEENjavascript:gs.dateGenerate('2014-10-01','00:00:00')@javascript:gs.dateGenerate('2014-10-31','23:59:59')</__encoded_query>
</getRecords>
</Body>
</Envelope>

因此,要使泡沫发挥作用,只需将 start_date 查询替换为 __encoded_query 查询即可:

from suds.client import Client

URL = 'http://localhost:8080/change_request.do?WSDL'
USERNAME = "admin"
PASSWORD = "admin"

client = Client(URL, username=USERNAME, password=PASSWORD)
result = client.service.getRecords(__encoded_query = "start_dateBETWEENjavascript:gs.dateGenerate('2014-10-01','00:00:00')@javascript:gs.dateGenerate('2014-10-31','23:59:59')")

print result

关于python - 如何使用 suds 通过 getRecords 搜索 servicenow 中的日期时间范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28775183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com