3

我正在尝试从 .Net 调用 Service Now 的 Web 服务,我可以让它在插入记录时正常工作,但我无法让任何GETs 工作。这是我的工作INSERT代码:

public void insertTable(string tableName, string schema, string columnInfo, string shortDesrcipt, string longDescript)
{
    using (ServiceNow_u_database_table tableReference = new ServiceNow_u_database_table())
    {
        insertResponse response = new insertResponse();

        System.Net.ICredentials cred = new System.Net.NetworkCredential(Properties.Settings.Default.UserName, Properties.Settings.Default.Password);
        tableReference.Credentials = cred;

        insert tableInsert = this.getTableData(tableName, schema, columnInfo, shortDesrcipt, longDescript);
        try
        {
            response = tableReference.insert(tableInsert);
        }
        catch (Exception error)
        {
            Console.WriteLine(error.Message);
        }
    }
}

这很好用。这是不起作用的代码GET

using (ServiceNow_u_database_table tableReference = new ServiceNow_u_database_table())
{
    ServiceNowExport.com.servicenow.libertydev.u_database_table.getRecords recordGet = new getRecords();
    System.Net.ICredentials cred = new System.Net.NetworkCredential(Properties.Settings.Default.UserName, Properties.Settings.Default.Password);
    tableReference.Credentials = cred;

    recordGet.name = this._tablePrefix + tableName;
    getRecordsResponseGetRecordsResult[] response = tableReference.getRecords(recordGet);
    if (response != null && response.Count() > 0)
    {
        return true;
    }
}

当我运行该代码时,response总是null. 我正在按照页面上的说明进行操作。

我知道它正在连接,因为如果我终止凭据行,我会收到未经授权的错误。有什么想法我在这里做错了吗?谢谢!

4

2 回答 2

8

来自 C# Web 服务上的 ServiceNow wiki:这里

如果您在客户端代码中收到来自 Web 服务的“null”响应,那么您可能错过了本教程中将 elementFormDefault 设置设置为“False”的步骤...请记住在之后针对 WSDL 重新编译您的代码您已更改此设置并保存。

可以在以下 ServiceNow 实例中找到该属性:系统属性 > Web 服务。将其设置为 false,您不应再从 getRecords 响应中收到 null。

这是该属性的屏幕截图: 图片截图

于 2012-05-13T02:13:06.053 回答
0

如果您有兴趣,我已经编写了一组肥皂类来获取并将一些信息放入 servicenow。目前它仅限于我在工作中需要能够做的事情,但应该为任何人工作。

https://github.com/jeffpatton1971/mod-ServiceNOW

随意检查一下

于 2015-02-10T17:53:09.713 回答