处理代理支持

本文介绍如何使用 Power Query SDK 在 Power Query 自定义连接器中启用代理支持。

Windows 代理设置

首先,需要在 Windows 中设置代理设置。 可通过两种方法通过 Internet 选项或网络和 Internet 设置来设置代理。

Internet 选项

  1. 在 Windows 开始菜单中,搜索并打开Internet 选项
  2. 选择“连接”选项卡。
  3. 选择LAN 设置
  4. 代理服务器部分,配置代理服务器。

网络和 Internet

  1. 在 Windows 开始菜单中,选择设置图标。
  2. 设置中,选择“网络和 Internet(Windows 10),或选择“打开导航”图标,然后选择“网络和 Internet(Windows 11)。
  3. 选择代理
  4. 手动代理设置部分,切换使用代理服务器按钮 (Windows 10),或是选择设置按钮并切换使用代理服务器按钮 (Windows 11)。
  5. 配置地址和端口。

启用代理支持

随即将 Web.DefaultProxy 函数添加到扩展性模块。 第三方 M 连接器可使用此函数提取在驱动程序属性中设置的 Web 代理设置(当代理如 Windows 代理设置中所述方法启用后)。

可在连接字符串中针对连接参数设置代理信息,而该参数可能因连接器而异。 不支持代理凭据(用户名和密码)。 Web.DefaultProxy 采用 serverUri/host 作为参数,并返回包含代理 URI 的记录以作为记录的 ProxyUri 字段。 若要获取连接器内 URI 的构成部分(例如方案、主机、端口),请使用 Uri.Parts

如果未配置代理,Web.DefaultProxy 则返回空记录。

用法示例

示例 1

若要在连接器代码中使用 Web.DefaultProxy,布尔类型变量可用于选择加入或退出使用此功能。 在此示例中,如果可选布尔参数 UseWebDefaultProxy 被设为 true(默认值为 false),则会在连接器代码中调用 Web.DefaultProxy

UseWebDefaultProxyOption = options[UseWebDefaultProxy]?,
ProxyUriRecord = if UseWebDefaultProxyOption then Web.DefaultProxy(Host) else null,
ProxyOptions = if Record.FieldCount(ProxyUriRecord) > 0 then
      [
            Proxy = ProxyUriRecord[ProxyUri]
      ]
      else [],
      ...

UseWebDefaultProxy 设为 true 并提取 ProxyUriRecord 后,便会创建一条记录来设置 Proxy(驱动程序支持的配置参数,可能有所不同)以及 Web.DefaultProxy 返回的 ProxyUri 字段。 可将其命名为类似 ProxyOptions。 然后,可将此记录追加到基本 ConnectionString,并包含代理详细信息。

Databases = Odbc.DataSource(ConnectionString & ProxyOptions, Options)

示例 2

如果驱动程序使用多个配置参数来设置代理详细信息(如单独处理的主机和端口详细信息),则可使用 Uri.Parts

UseWebDefaultProxyOption = options[UseWebDefaultProxy]?,
ProxyRecord = if UseWebDefaultProxyOption then Web.DefaultProxy(Host) else null,
UriRecord = if ProxyRecord <> null then Uri.Parts(ProxyRecord) else null,
ProxyOptions = if UriRecord <> null then
    [
        ProxyHost = UriRecord[Scheme] & "://" & UriRecord[Host],
        ProxyPort = UriRecord[Port]
    ]
    else [],
    ...