使用 SOAP 请求记录

已完成

下一个示例是使用基本身份验证,从 2022 年 4 月的 2022 年第一波版本开始,Business Central SaaS 已不再支持此功能。 Business Central On-premises 仍支持基本身份验证。

在 C# SOAP 示例中添加 OAuth 2.0 支持超出了与 Business Central 集成的范围,因为它需要高级 C# 知识。 Business Central 中的 SOAP 将被逐步弃用,但现在我们将此示例留作参考/信息。

要使用 SOAP 从 Business Central 请求记录,您需要用支持 SOAP 的其他编程语言创建一个单独的应用程序。 以下过程显示了如何从 .NET 应用程序连接到 Business Central SOAP Web 服务。

  1. 打开 Visual Studio(而非 Visual Studio Code)。 如果尚未安装 Visual Studio,请前往 https://visualstudio.microsoft.com/?azure-portal=true,下载 Visual Studio Community Edition。

  2. 在 Visual Studio 对话框中选择创建新项目

    Visual Studio 创建新项目功能的屏幕截图。

  3. 搜索控制台应用,选择针对 C#控制台应用 (.NET Framework),然后选择下一步

    控制台应用 C# 选项的屏幕截图。

  4. 为应用程序命名并指定控制台应用的存储位置。 选择创建以完成项目创建。

请求记录时,请务必始终在请求特定服务之前提供公司信息。 因此,应首先在 URI 中定义默认公司。 由于“公司”表的主键为 Name,因此您需要提供名称以选择特定公司。

https://api.businesscentral.dynamics.com/v2.0/<tenant>/Sandbox/WS/<companyname>/<objecttype>/<service>

以下示例显示了正在请求的所有客户记录。

基 URL:https://api.businesscentral.dynamics.com/v2.0/<tenant>/Sandbox/WS/CRONUS USA%2C Inc./Page/Customers

要请求记录,需要将本链接添加为 Visual Studio 项目的服务引用。 在 Visual Studio 的解决方案资源管理器中右键单击应用程序,选择添加,然后选择服务引用...

添加为服务引用的链接的屏幕截图。

将 SOAP 服务 URL 粘贴到地址字段,然后选择转到。 您会收到一条消息,提示您系统将以明文形式发送凭据。 选择,以继续操作。 需要输入用户名和密码。 密码是 Web 服务的访问密钥。

确认以明文形式向服务器发送凭据的消息的屏幕截图。

服务列表中会列出客户服务。 您可以在屏幕底部选择 Customers_Port 并指定命名空间。 请注意,Customers_Port 服务已创建多种方法,用于创建、删除、读取和更新客户记录。

“添加服务引用”详细信息的屏幕截图。

选择确定按钮以完成服务引用创建。 本操作会根据 SOAP 服务 WSDL 文档中的实体自动生成 C# 类。

以下示例使用 SOAP 检索位置代码为蓝色的所有客户,并将其显示在控制台输出窗口中。 Customers_PortClient 类提供多种可用函数的访问权限。 本示例使用 ReadMultiple 函数根据多个筛选器检索多条记录。 ReadMultiple 函数可返回一个可循环的数组。

using System;
using ConsoleApp2.BCCustomer;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Customers_PortClient portClient = new Customers_PortClient();

            portClient.ClientCredentials.UserName.UserName = "mywebserviceuser";
            portClient.ClientCredentials.UserName.Password = "rk3CwanGRBEM3ioideNC...";

            Customers_Filter[] filters = new Customers_Filter[1];

            Customers_Filter blueFilter = new Customers_Filter();
            blueFilter.Field = Customers_Fields.Location_Code;
            blueFilter.Criteria = "BLUE";

            filters[0] = blueFilter;

            Customers[] customers = portClient.ReadMultiple(filters, null, 0);

            foreach (var customer in customers)
            {
                Console.WriteLine(customer.Name);
            }

            Console.ReadKey();
        }
    }
}

要使用 SOAP 更新或创建新记录,可以使用 PortClient 中可用的创建更新方式。

PortClient 中创建或更新方式的屏幕截图。