【问题标题】:Can't resolve ServiceNow incident using REST API无法使用 REST API 解决 ServiceNow 事件
【发布时间】:2018-10-22 21:24:19
【问题描述】:

我在我的应用程序中使用 ServiceNow REST API

我需要解决现有的事件

为此,我使用PUT 方法,我可以更新一些字段,例如short_description。但如果我尝试更新 state 字段,那么 API 不会更新此字段。

我用很简单的C#代码:

_restClient.BaseUrl = new Uri(string.Format("https://{0}.service-now.com", serverName));
var request = new RestRequest(string.Format("/api/now/table/incident/{0}", incidentId), Method.PUT)
{
    RequestFormat = DataFormat.Json
};
request.Credentials = new NetworkCredential(userName, password);
request.AddBody(new { state = "6" });
var response = _restClient.Execute(request);

我尝试将state 更新为值6,因为这个值是Resolve

但该字段未通过 REST API 更新。不过,我可以通过 Web UI 解决我的事件。

为什么不使用 REST API 更新状态字段?

【问题讨论】:

    标签: .net api servicenow


    【解决方案1】:

    您尝试更新的字段不应是只读的。

    【讨论】:

    • 看来你是对的......你能否更详细地描述我如何更改readonly 属性。也许你可以附上截图?
    • 转到字典和字典覆盖。也看看 ACL。 REST 用户可以写入 State 字段吗?
    • 感谢您对问题的关注。它解决了我的麻烦。
    【解决方案2】:

    您可能错过了填写必填字段。在通过 WebUI 解决事件时记下所有必填字段,并将这些字段添加到 PUT 请求的正文中。

    您也应该分享请求的响应。这可能有助于发现问题所在。

    【讨论】:

      【解决方案3】:

      导致该行为的一个可能原因是在该表上设置了访问控制列表 (ACL)。您可以阅读它们,例如 here

      在我遇到的一种情况下,除非“automated_state_flow”参数设置为 false,否则有一个特殊的状态更改“流程”会禁止更改工单的状态。在你的情况下可能是一样的吗?我会尝试使用以下 JSON 发送请求:

      {"automated_state_flow"="False";
      "state" = "6"}
      

      然后发送第二个网络请求:

      {"automated_state_flow"="False"}
      

      【讨论】:

        猜你喜欢
        • 2021-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多