簡體   English   中英

通過Python中的代理將XML數據發布到服務器

[英]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 我試圖通過以下方式將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常量,但是,我不知道如何使用它們(沒有定義證書會拋出異常)。 請指出如何執行此操作。

也許將httplibxmlrpclib一起使用是合適的嗎? 如何定義它們並組合在一起工作?

最后,我想出了辦法,並希望分享。 它比預期的要簡單得多:

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM