プロキシサーバーが異なる2つのオフィスでQGISを使用しています。
現時点では、オフィスを切り替えるたびに手動でプロキシ設定を変更する必要があります。
PyQGISを使用してプログラムでプロキシ設定を変更できるかどうか疑問に思っていましたか?次に、プロキシ設定を切り替えるプラグインを作成できます。
編集1:
それまでの間、QGISのプロキシ設定を変更する方法を見つけましたが、それでも機能しません。
このコードを使用して、設定を変更できます。
from PyQt4.QtCore import QUrl, QSettings
from PyQt4.QtNetwork import QNetworkRequest, QNetworkProxy
from qgis.core import QgsNetworkAccessManager
my_settings={"Proxy enabled": u'proxy/proxyEnabled', "Proxy Host ": u'proxy/proxyHost', "Proxy Port": u'proxy/proxyPort'}
fiddler={"Proxy enabled": True, "Proxy Host ": "localhost", "Proxy Port": 8888}
freiburg={"Proxy enabled": True, "Proxy Host ": "192.168.95.165", "Proxy Port": 8080}
aus={"Proxy enabled": False, "Proxy Host ": "192.168.95.165", "Proxy Port": 8080}
current_choice=aus
s = QSettings() #getting proxy from qgis options settings
for key, val in my_settings.iteritems():
#print str(key)+":"+str(val)
settings_key=key
#print str(settings_key)
# Get user defined current setting
for key2, val2 in current_choice.iteritems():
if key2==settings_key:
#print key
#print val
settings_val=val2
current_setting = s.value(str(val).decode('unicode-escape'))
#print str(val).decode('unicode-escape')
#print str(key)+": "+str(current_setting)
s.setValue(unicode(str(val)), settings_val)
s.sync()
# procedure to set proxy if needed
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)
これは、変更された設定をQGIS UIで確認できる限りは機能します(設定->オプション)。
設定はWindowsレジストリにも書き込まれますが、QGIS設定ダイアログの[OK]ボタンをクリックするまで、変更は有効になりません。
プログラムでプロキシを設定して、QGISがインターネットにアクセスできないようにするいくつかのプロキシ設定(localhost:98765など)でこれをテストし、wms-layerをロードしてパンすることを試みることができます。何が欠けているのでしょうか?
Edit2:qgisからの出力をファイルにパイプし、GUIを使用してプロキシ設定を変更するとどうなるかを確認しました。
src/core/qgsnetworkaccessmanager.cpp: 364: (setupDefaultProxyAndCache) [9134ms] setting proxy 3 192.168.95.165:8080 /
src/core/qgsnetworkaccessmanager.cpp: 167: (setFallbackProxyAndExcludes) [0ms] proxy settings: (type:HttpProxy host: 192.168.95.165:8080, user:, password:not set
したがって、2つの関数(setupDefaultProxyAndCacheおよびsetFallbackProxyAndExcludes)が呼び出されます。おそらく、pyQGISを使用して設定を変更するときに、そのようなことを行う必要がありますか?