1

次の形式のデータを含むリクエストを送信する必要があります。

parameterss = urlencode({'various': 'credentials', ... ,
'xmlquery': '<?xml version="1.0" encoding="UTF-8"?> \
         <query>...</query>'})

通常、XML クエリが含まれます。送信したいサーバーがhttps://some/serverで、プロキシが であるとしproxy:port_numberます。私は次の方法で使用しようとhttplib2SocksiPyました:

import httplib2, socks
from urllib import urlencode
proxy = httplib2.ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='proxy', proxy_port=port_number)
http = httplib2.Http(proxy_info=proxy)
response, content = http.request("https://some/server", "POST", parameters)
print response

それは機能しますが、応答は望ましいものではありません。明らかに、HTTPS プロキシを使用する必要があるためです (これは同じです)。私は証明書情報を持っていません - 同様の動作する Perl スクリプトはそれを使用せず、プロキシを環境変数として定義します。と定数SocksiPyがありますが、それらの使用方法がわかりません(証明書を定義しないと例外がスローされます)。これを行う方法を教えてください。PROXY_TYPE_SOCKS4PROXY_TYPE_SOCKS5

httplibで使用するのが適切xmlrpclibでしょうか?それらを定義し、機能させるにはどうすればよいですか?

4

1 に答える 1

0

最後に、私はその方法を見つけたので、共有したいと思います。予想よりもはるかに簡単でした:

    import urllib, urllib2
    parameters = urllib.urlencode({'various': 'credentials', ... ,
    'xmlquery': '<?xml version="1.0" encoding="UTF-8"?> \
     <query>...</query>'})
    request = urllib2.Request("https://some/server", parameters)
    response = urllib2.urlopen(request)
    print response

理由はわかりませんが、コードでプロキシを定義せずに機能しました-シェルの環境変数を介してサーバーで定義しただけです。

于 2012-08-31T08:05:43.807 に答える