まだPythonには全く新しいです。 this questionに似た問題があります。私のスクリプトは、メッセージにwsseを使用し、HTTPSを使用してプロビジョニングされたWebサービスに接続しようとしています。私は認証されていないプロキシを使用する必要があります。私は次のようにサービスを利用するために泡を使用します。なぜこのsudsスクリプトはurlopenエラーを返すのですか?[Errno -2]名前またはサービスが不明ですか?
import logging
import suds
import urllib2
from suds.client import Client
from suds.transport.https import HttpAuthenticated
#---These are not real values but represent them.---------
SERVICE_URL = 'https://service.com/1/soap'
SERVICE_USR = 'serviceusr'
SERVICE_PWD = 'servicepwd'
WSDL_URL = 'file:///folder/a.wsdl'
PROXY_NAME = 'proxy'
PROXY_PORT = 80
#----------------------------------------------------------
logging.basicConfig(level = logging.DEBUG)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
proxy_info = {'host': PROXY_NAME,'port': PROXY_PORT}
proxyHandler = urllib2.ProxyHandler({'https':'https://(host)s:%(port)d/' % proxy_info})
opener = urllib2.build_opener(proxyHandler)
urllib2.install_opener(opener)
security = suds.wsse.Security()
token = suds.wsse.UsernameToken(SERVICE_USR, SERVICE_PWD)
security.tokens.append(token)
messageTransport = HttpAuthenticated(username = SERVICE_USR, password = SERVICE_PWD)
messageTransport.urlopner = opener
client = Client(url = WSDL_URL, location = SERVICE_URL, transport = messageTransport)
client.set_options(wsse=security)
result = client.service.ParseValidAddress('1 ABC Street Somwhere')
スクリプトは、私は次のエラーを取得する実行したら:
Error details: <class 'urllib2.URLError'> <urlopen error [Errno -2] Name or service not
known>
だから私は、次のようにすべてのネットワークビットが働いている確認するには、カール走っ:
curl -x proxy:80 https://service1.com/1/soap
これは、ネットワーク構成とプロキシが正しくセットアップされていることを示すSOAPメッセージを返します。では、なぜ泡が同じではないのですか?私はどこで失敗したのですか?
プロキシが実行されているポートを明確にすることはできますか? –
プロキシはポート80にあります.HTTPSの場合はどちらが奇妙ですか? – GrantVS
あなたのプロキシホスト 'proxy'は解決可能ですか? 'proxy'ホストのFQDNを追加してみてください。つまり、 'PROXY_NAME = 'proxy.example.com'です。ポート80で実行されているプロキシも使用されているか、HTTPSであるかは不思議ではありません。私たちは仕事で同じことをしています。 –