0

我已经对 SOAP 服务使用了 zeep,它运行良好。但是,当这个服务放在 Gravitee API Manager 后面时,我无法让它继续工作,只能得到 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(node)) 生成的消息时,它可以正常工作。此外,如果我更改 api-key,我会收到有关身份验证问题的错误,因此 Gravitee 似乎接受了我的代码中的密钥。但是我得到的响应是正确的 api-key,总是 [404]。

当我将 wsdl 下载到本地文件时让它工作,但不想为每个 wsdl 都这样做。

有任何想法吗 ?

4

1 回答 1

0

从 Gravitee 获得 404 的原因有多种: * 您是否创建了 API * 您是否为此 API 创建了一个简单的计划 * 您是否将 API 部署到网关。

完成所有这些步骤后,您应该能够使用您的 API。

希望能帮助到你,

问候,

于 2020-01-24T18:21:57.687 回答