本文介绍如何使用 Power Query SDK 在 Power Query 自定义连接器中启用代理支持。
Windows 代理设置
首先,需要在 Windows 中设置代理设置。 可通过两种方法通过 Internet 选项或网络和 Internet 设置来设置代理。
Internet 选项
- 在 Windows 开始菜单中,搜索并打开Internet 选项。
- 选择“连接”选项卡。
- 选择LAN 设置。
- 在代理服务器部分,配置代理服务器。
网络和 Internet
- 在 Windows 开始菜单中,选择设置图标。
- 在设置中,选择“网络和 Internet”(Windows 10),或选择“打开导航”图标,然后选择“网络和 Internet”(Windows 11)。
- 选择代理。
- 在手动代理设置部分,切换使用代理服务器按钮 (Windows 10),或是选择设置按钮并切换使用代理服务器按钮 (Windows 11)。
- 配置地址和端口。
启用代理支持
随即将 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 [],
...