Запрос C # PUT (оставшийся API для ServiceNow) - обновление состояния запроса, ошибка - ошибка тайм-аута - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть функция, которая принимает запись об обслуживании. Сначала я извлекаю запись с помощью GetByQuery с объектами / полями json, перечисленными во фрагменте sc_request. Я изменяю значение состояния на 98, а затем передаю запись "r" в функцию PUT.

Тем не менее, я получаю тайм-аут как сообщение об исключении, хотя я передаю запись именно так, как она хочет

Я могу выполнить PUT, используя cURL, и остальные API-интерфейсы API в эксплуатации теперь в порядке.

public RESTSingleResponse<T> Put(T record)

        {
            var response = new RESTSingleResponse<T>();

            try
            {
                string data = JsonConvert.SerializeObject(record, new ResourceLinkConverter());
                response.RawJSON = ServiceNowClient.UploadString(URL + "/" + record.sys_id + "?&sysparm_fields=" + _FieldList, "PUT", data);
            }
            catch (WebException ex)
            {
                response.ErrorMsg = ParseWebException(ex);
            }
            catch (Exception ex)
            {
                response.ErrorMsg = "An error occured retrieving the REST response: " + ex.Message;
            }
            RESTSingleResponse<T> tmp = JsonConvert.DeserializeObject<RESTSingleResponse<T>>(response.RawJSON);

            if (tmp != null) {
                response.Result = tmp.Result; }
            return response;
        }







public class sc_request : Record

    {
        [JsonProperty("active")]

        public bool active { get; set; }
        [JsonProperty("number")]

        public string number { get; set; }
        [JsonProperty("description")]

        public string description { get; set; }
        [JsonProperty("u_affected_platform")]

        public string affected_platform { get; set; }

        [JsonProperty("state")]
        public string state { get; set; }
    }





IRestQueryResponse<sc_request> response = client.GetByQuery(query);

  foreach (sc_request r in response.Result)
            {
                if (r.state == "97")
                {
                    r.state = "98"; // set the state
                    IRestSingleResponse<sc_request> putResponse = client.Put(r);
                }
...