我确信我这样做是错误的,因为我对 Xml 或 SOAP 一无所知,但我正在尝试使用 Python requests.post() 发送 SOAP 请求。我想我可以将正文作为纯文本传递。如果我使用
data=body
,我会收到解码错误,指出无法使用 Latin-1,即使我认为我对 utf-8
进行了解码。如果我使用 params=body
请求成功,但它说我有一个无效的根元素。我将如何解析以下 xml 文档?我只是尝试按照以下说明通过身份验证过程:
https://developer.stamps.com/developer/docs/swsimv71.html#authentication
xml元素树在这里: https://swsim.testing.stamps.com/swsim/swsimv71.asmx?wsdl
我使用以下代码尝试发送请求来发送我的身份验证凭据。如果您能让我知道我在哪里以及有多严重地搞砸了这个请求,我将不胜感激。
url = "https://swsim.testing.stamps.com/swsim/swsimv71.asmx"
headers = {
'User-Agent': 'Crosscheck Networks SOAPSonar',
'content-type': 'text/xml',
'charset': 'utf-8'
}
body = """
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns=“http://stamps.com/xml/namespace/2018/03/swsim/swsimv71”
>
<soap:Body>
<AuthenticateUser>
<tns:Credentials>
<IntegrationsID>
ID
</IntegrationsID>
<Username>
USERNAME
</Username>
<Password>
PASSWORD
</Password>
</tns:Credentials>
</AuthenticateUser>
</soap:Body>
</soap:Envelope>
"""
r = requests.post(url, headers=headers, params=body)
print(r.content)
我想这可能对你有帮助,我的朋友!
import requests
request = '''
<?xml version="1.0" encoding="UTF-8"?>
<Requ>
<GivenName>Özdemam</GivenName>
<FamilyNameGrünzl</FamilyName>
</Requ>
'''.encode('utf-8')
headers = {'Content-Type': 'text/xml': 'charset=utf-8'}
req = requests.Request('POST', 'http://192.168.1.5:8888/api',
headers=headers,
data=request)
prepped_requ = req.prepare()
s = requests.Session()
http_response = s.send(prepped_requ)
print http_response