gpt4 book ai didi

python - 在客户端 __init__ (Python suds) 上设置 useragent

转载 作者:行者123 更新时间:2023-12-01 06:02:20 25 4
gpt4 key购买 nike

我想知道如何在Python中使用suds的所有SOAP请求中设置用户代理,包括WSDL get。事实上,在以下代码上:客户端('http://...')WSDL 使用默认的 Python 用户代理获取。

WSDL 在服务器上仅适用于特定的用户代理。

谢谢

最佳答案

我不知道这是否是最简单的方法,但使用 httplib2 肯定可以做到(这个技巧还可以让您保持事件连接):

from suds.transport import Transport
import httplib2, StringIO

class Httplib2Response:
pass
class Httplib2Transport(Transport):

def __init__(self, **kwargs):
Transport.__init__(self)
self.http = httplib2.Http()

def send(self, request):
url = request.url
message = request.message
headers = request.headers
headers['User-Agent']='XYZ'
response = Httplib2Response()
response.headers, response.message = self.http.request(url,
"PUT", body=message, headers=headers)

return response

def open(self, request):
response = Httplib2Response()
request.headers['User-Agent']='XYZ'

response.headers, response.message = self.http.request(request.url, "GET",
body=request.message, headers=request.headers)
return StringIO.StringIO(response.message)

然后您需要将传输类传递给 suds.client:

http = Httplib2Transport()
client = Client(url,transport=http)

关于python - 在客户端 __init__ (Python suds) 上设置 useragent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9724731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com