【问题标题】:Where do I initialize or put my Client ID so I can make SOAP calls?我在哪里初始化或放置我的客户端 ID 以便进行 SOAP 调用?
【发布时间】:2020-09-11 16:56:50
【问题描述】:

所以我有一个用户名和密码,还有一个 ClientID。使用 JSON,我可以创建一个标头字段来添加这些内容并执行 requests.post(endpoint, json=payload, headers=my_headers),但对于 SOAP,标头字段是 {content-type': 'application/soap+xml '} 和 auth= 接受用户名和密码。那么我的 ClientID 会发生什么变化,或者我在哪里初始化它?

首先,我将从使用 Zeep for Python 尝试的内容开始。

from requests.auth import HTTPBasicAuth
from requests import Session
from zeep.transports import Transport
from zeep import Client, Settings

#Client-ID
client_id = '7777'

username = 'jj'
password = 'tt'

#this endpoint ends with .svc, not sure if that matters but even if I were to add ?wsdl I get 400 error
wsdl = 'endpoint_url_.svc'

settings = Settings(strict=False, xml_huge_tree=True)


session = Session()
session.auth = HTTPBasicAuth(username, password)
client = Client(wsdl, settings=settings, # the Client field here doesn't take ClientID but my endpoint
            transport=Transport(session=session))

所以 Zeep 说要运行 python -mzeep wsdl 来获取肥皂方法,但这是我的输出: 前缀: xsd:http://www.w3.org/2001/XMLSchema

全局元素:

全局类型: xsd:anyType xsd:实体 xsd:实体 xsd:ID xsd:IDREF xsd:IDREFS xsd:NC 名称 xsd:NMTOKEN xsd:NMTOKENS xsd:注解 xsd:名称 xsd:QName xsd:anySimpleType xsd:anyURI xsd:base64Binary xsd:布尔值 xsd:字节 xsd:日期 xsd:日期时间 xsd:十进制 xsd:双 xsd:持续时间 xsd:浮动 xsd:gDay xsd:g月 xsd:gMonthDay xsd:g年 xsd:g年月 xsd:hex二进制 xsd:int xsd:整数 xsd:语言 xsd:长 xsd:负整数 xsd:nonNegativeInteger xsd:nonPositiveInteger xsd:标准化字符串 xsd:正整数 xsd:短 xsd:字符串 xsd:时间 xsd:令牌 xsd:无符号字节 xsd:unsignedInt xsd:unsignedLong xsd:unsignedShort

绑定:

所以即使我这样做了,我的任何方法都不会在服务中显示出来。 result = client.service.(一些方法)

  1. 没有 Zeep 的第二次尝试。现在由于某种原因,身体的肥皂数据示例看起来像这样。

    导入请求 从 requests.auth 导入 HTTPBasicAuth

    soap_body = '''

    1

    D

    0

    5 '''

根据我在网上阅读和看到的示例和 SOAP 调用,它缺少信封、正文和标头,但我们假设这是发出 post 请求的正确 xml。

headers = {'content-type': 'application/soap+xml'}
url = 'endpoint_url.svc'

username = 'jj'
password= 'tt'
client_id = '7777'

response = requests.post(url, data=soap_body, headers=headers, auth=HTTPBasicAuth(username, password))
print(response)
print(response.content)

我得到的输出 b''

requests.post 似乎没有使用 ClientID 字段。我将如何首先初始化它?任何建议或建议表示赞赏。感谢您的宝贵时间。

【问题讨论】:

  • 由于某种原因,我的肥皂主体并没有得到正确的结果,但它看起来像 w3.org/2001/XMLSchema-instance"> 1T1ex5

标签: python soap zeep


【解决方案1】:

我在任何地方的文档中都找不到这个,但客户端 ID 也可以放在标题中。 headers = {'content-type': 'application/soap+xml', 'Client-ID':'123'}

【讨论】:

    猜你喜欢
    • 2015-09-23
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    相关资源
    最近更新 更多