我在SOAP服务上使用过zeep,它工作得很好。然而,当这个服务被放在Gravitee API管理器后面时,我无法让它继续工作,只能得到一个404响应。
下面是我的代码:
from zeep import Client, Settings
import base64,sys, logging, traceback
from requests import Session
from zeep.transports import Transport
import requests
from lxml import etree
wsdl= 'https://link_to_service_on_gravitee'
session = Session()
session.verify = False
session.headers['Api-Key']= 'xxxxx'
transport = Transport(session=session)
settings = Settings(raw_response=True, strict=False, xml_huge_tree=True)
client = Client(wsdl, transport=transport, settings=settings)
data = []
data.append(
{'ServerProcessId': 'GL07',
'OrderNumber': 1}
)
cdata = []
cdata.append(
{'Username': 'xxx',
'Client': 'yyy',
'Password': 'zzz'}
)
node = client.create_message(client.service, 'GetResult',input=data, credentials=cdata)
print('*** SOAP Message')
print(etree.tostring(node))
print('*** End SOAP Message')
response = requests.Response()
try:
response = client.service.GetResult(input=data, credentials=cdata)
print(response)
except Exception as e:
print(response.headers)
logging.error(traceback.format_exc())当我在SOAPUI中测试由Python (etree.tostring(etree.tostring))生成的消息时,它可以正常工作。此外,如果我修改api- key,我会得到一个关于身份验证问题的错误,因此Gravitee似乎接受了我代码中的密钥。但是,使用正确的api-key,我得到的响应总是404。
当我将wsdl下载到本地文件时,它就可以工作了,但是我不想对每个wsdl都这样做。
有什么想法吗?
发布于 2020-01-25 02:21:58
从Gravitee获得404有多种原因:*你创建了API吗*你为这个API创建了一个简单的计划*你把API部署到网关了吗?
一旦完成了所有这些步骤,您就可以使用您的API了。
希望能有所帮助,
致以敬意,
https://stackoverflow.com/questions/59624264
复制相似问题