QGIS 会走代理,而基于 Requests 的插件不会
梳理 QGIS 网络配置与插件独立 Python Requests 客户端之间的分界。
地图图层能通过公司代理加载,而插件的 API 调用却失败。两个操作都在 QGIS 内运行,但它们可能使用不同的 HTTP 客户端。
QGIS 为网络操作提供 QgsNetworkAccessManager。它把 QGIS 的网络配置带入通过该管理器发出的请求。导入 Requests 的 Python 插件会创建另一个客户端,拥有自己的代理与认证行为。
选择你想共享的配置
对于应当遵循用户 QGIS 网络偏好的插件,使用 QGIS 网络管理器可以避免独立地重建这些偏好。请核对与你所支持的 QGIS 版本相匹配的 API,包括其异步行为与认证集成。
如果因为其他原因需要 Requests,请有意识地配置它。它的代理字典与环境变量处理都遵循 Requests 文档。在 QGIS 设置中选定的代理不会自动成为 Requests 会话设置。
尝试论坛上的 Qt 示例时要弄清作用范围。设置 Qt 应用代理只影响 Qt 网络。它并不能证明使用另一套网络实现的 Requests 已改变其路由。
比较同一个目标
比较行为时请使用失败的那个插件 URL。地图服务与不相关的 API 可能有不同的绕过规则、代理权限或证书链。一次成功的地图请求只能证明它自己的路由可用。
记录 HTTP 客户端名称、目标主机、是否请求了代理认证,以及实际的错误阶段。从插件日志中排除密码。这个小比较通常就能告诉你该修 QGIS 网络集成还是独立的 Python 客户端,而不必重置对用户已经生效的代理偏好。