C# ServiceNow-获取所有记录
在中,在C# ServiceNow-获取所有记录,c#,.net,c#-4.0,servicenow,C#,.net,C# 4.0,Servicenow,在中,在SOAP请求中,我最多只能获得250条记录。如何获取所有记录 Web Reference Url = https://*****.service-now.com/rm_story.do?WSDL 代码: 在recordResults中,我只得到250条记录。如何获取所有记录?是否尝试通过/覆盖\u limit参数 另请参阅此堆栈溢出答案,其中提供了相关信息。 请注意,返回大量记录可能会影响响应的性能,使用偏移量(即获取1-100,然后获取101-200,…)成批处理查询可能更有效。这
SOAP
请求中,我最多只能获得250条记录。如何获取所有记录
Web Reference Url = https://*****.service-now.com/rm_story.do?WSDL
代码:
在
recordResults
中,我只得到250条记录。如何获取所有记录?是否尝试通过/覆盖\u limit
参数
另请参阅此堆栈溢出答案,其中提供了相关信息。 请注意,返回大量记录可能会影响响应的性能,使用偏移量(即获取1-100,然后获取101-200,…)成批处理查询可能更有效。这可以通过使用排序顺序和偏移量来实现。ServiceNow REST表API实际上从Get请求返回链接头,为您提供第一组、下一组和最后一组记录的链接,从而使您很容易知道查询下一批记录的url 见:
然后在“响应头”下查看。在代码段中的第行,它说//filter您应该定义uu limit(以及可能的u first_row和u last_row,如下面的示例所述)
var url=“https://*****.service now.com/rm_story.do?__limit=700&SOAP”;这是增加限额的正确方法吗?如果没有,如何在
SOAP
请求中添加限制?谢谢。参数必须在请求体中传递,如:state=7300请参阅完整的HTTP请求示例,网址为:
var url = "https://*****.service-now.com/rm_story.do?SOAP";
var userName = *****;
var password = *****;
var proxy = new ServiceNow_rm_story
{
Url = url,
Credentials = new NetworkCredential(userName, password)
};
try
{
var objRecord = new Namespace.WebReference.getRecords
{
// filters..
};
var recordResults = proxy.getRecords(objRecord);
}
catch (Exception ex)
{
}
int Skip = 0;
int Take = 250;
while (true)
{
using (var soapClient = new ServiceNowLocations.ServiceNow_cmn_location())
{
var cred = new System.Net.NetworkCredential(_user, _pass);
soapClient.Credentials = cred;
soapClient.Url = _apiUrl + "cmn_location.do?SOAP";
var getParams = new ServiceNowLocations.getRecords()
{
__first_row = Skip.ToString(),
__last_row = (Skip + Take).ToString(),
__limit = Take.ToString()
};
var records = soapClient.getRecords(getParams);
if (records != null)
{
if (records.Count() == 0)
{
break;
}
Skip += records.Count();
if (records.Count() != Take)
{
// last batch or everything in first batch
break;
}
}
else
{
// service now web service endpoint not configured correctly
break;
}
}
}