gpt4 book ai didi

python - 带有 Zeep 和 Python 的 SOAP 客户端中的 Bearer Token 授权 header

转载 作者:行者123 更新时间:2023-12-04 12:25:39 25 4
gpt4 key购买 nike

我是 SOAP 请求和一般编程的新手。我想访问需要持有者 token 授权才能使用其服务之一的 WSDL。

调用后我想访问的服务的信息 pyhton -mzeep *WSDL_url* :

  getInfo(param1: xsd:string, param2: xsd:anySimpleType, param3: xsd:anySimpleType) -> out: ns0:ResponseCurve[]

首先,我收到 token :
import zeep
user = 'my_user'
userpass = 'my_pass'
token = client.service.getAuthToken(user,userpass)

然后我想请求需要三个参数的服务 getInfo:
my_info = client.service.getInfo('param1', 'param2', 'param3')

我从提供商那里知道,每次我想访问此服务时都需要 token ,并且在文档中,以下是关于有关身份验证的 header 的说明:

授权:承载 eyJhbGciOiJIUzI1N[...]

我试图将标题作为字典传递给 _soapheaders但不工作。

我可以使用强制请求访问服务:
def get_response_from_provider(token, param1, param2, param3):
url = "WSDL url"
headers = {'Authorization': 'Bearer ' + token,
'content-type': 'text/xml'}
body = """
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsl="uri">
<soapenv:Header/>
<soapenv:Body>
<wsl:getInfo>
<param1>""" + param1 + """</param1>
<param2>""" + param2 + """ </param2>
<param3>""" + param3 + """ </param3>
</wsl:getInfo>
</soapenv:Body>
</soapenv:Envelope>"""
response = requests.post(url, data=body, headers=headers)
print("Info recieved...")

return response

但是我想通过 SOAP 客户端访问服务。

这是他们在 PHP 中添加 token 的方式:
$soap->soapClient->_stream_context = stream_context_create([
'http' => [
'header' => sprintf('Authorization: Bearer %s', $authTokenResponse->token)
]
]);

关于如何将带有 token 的 header 添加到 Python 中的客户端请求的任何想法?

我在 SOF 中看到了很多关于 SOAP+Python 的帖子,但都无法解决问题。即使使用 Zeep 文档,我也无法使其工作。

谢谢

最佳答案

我想做类似的事情,结果它在文档中,但它有点隐藏,你可以在这里找到它:
https://python-zeep.readthedocs.io/en/master/settings.html#context-manager
简而言之,您可以执行以下操作:

import zeep

settings = zeep.Settings(extra_http_headers={'Authorization': 'Bearer ' + token})
client = zeep.Client(wsdl=url, settings=settings)

关于python - 带有 Zeep 和 Python 的 SOAP 客户端中的 Bearer Token 授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53656397/

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