在 qgis 插件中设置代理参数。如何

Enr*_*uti 5 python plugins pyqt qgis

对于那些感兴趣的人,我找到了以用户透明的方式从 qgis 插件中设置代理设置的明确方法。如果您计划将 Web 服务与 urllib 或 QwebWiew 一起使用,这将非常有用。使用 Qsetting 功能可以从 qgis 应用程序读取和写入存储在注册表中的用户应用程序选项设置。问题是注册表项的使用没有记录,但是深入 qgis 源代码可以找到它们并将其用于插件中以用于其他目的。这是正确设置代理参数的一段代码。

    # procedure to set proxy if needed
    s = QSettings() #getting proxy from qgis options settings
    proxyEnabled = s.value("proxy/proxyEnabled", "")
    proxyType = s.value("proxy/proxyType", "" )
    proxyHost = s.value("proxy/proxyHost", "" )
    proxyPort = s.value("proxy/proxyPort", "" )
    proxyUser = s.value("proxy/proxyUser", "" )
    proxyPassword = s.value("proxy/proxyPassword", "" )
    if proxyEnabled == "true": # test if there are proxy settings
       proxy = QNetworkProxy()
       if proxyType == "DefaultProxy":
           proxy.setType(QNetworkProxy.DefaultProxy)
       elif proxyType == "Socks5Proxy":
           proxy.setType(QNetworkProxy.Socks5Proxy)
       elif proxyType == "HttpProxy":
           proxy.setType(QNetworkProxy.HttpProxy)
       elif proxyType == "HttpCachingProxy":
           proxy.setType(QNetworkProxy.HttpCachingProxy)
       elif proxyType == "FtpCachingProxy":
           proxy.setType(QNetworkProxy.FtpCachingProxy)
       proxy.setHostName(proxyHost)
       proxy.setPort(int(proxyPort))
       proxy.setUser(proxyUser)
       proxy.setPassword(proxyPassword)
       QNetworkProxy.setApplicationProxy(proxy)
Run Code Online (Sandbox Code Playgroud)

etr*_*lle 1

您应该使用 QGIS 提供的 QgsNetworkAccessManager。代理会自动为您设置。

from qgis.core import QgsNetworkAccessManager
network_manager = QgsNetworkAccessManager.instance()
Run Code Online (Sandbox Code Playgroud)

http://qgis.org/api/classQgsNetworkAccessManager.html