У меня есть функция, которая принимает запись об обслуживании. Сначала я извлекаю запись с помощью 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);
}