[英]POST XML data to server via proxy in Python
我需要發送包含以下格式數據的請求:
parameterss = urlencode({'various': 'credentials', ... ,
'xmlquery': '<?xml version="1.0" encoding="UTF-8"?> \
<query>...</query>'})
通常,它包含一個XML查詢。 假設我要發送的服務器是https://some/server
,我的代理服務器是proxy:port_number
。 我試圖通過以下方式將httplib2
與SocksiPy
結合使用:
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_SOCKS4
和PROXY_TYPE_SOCKS5
常量,但是,我不知道如何使用它們(沒有定義證書會拋出異常)。 請指出如何執行此操作。
也許將httplib
與xmlrpclib
一起使用是合適的嗎? 如何定義它們並組合在一起工作?
最后,我想出了辦法,並希望分享。 它比預期的要簡單得多:
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
我不知道為什么,但是它沒有在代碼中定義任何代理就可以工作-我只是通過外殼中的環境變量在服務器上定義了它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.