You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python通过证书调用SOAP API遇问题:返回200但获RTL-API-1002错误

问题描述

尝试用Python发送请求建立客户端与服务端的连接,已将证书转换为.pem格式,从.pem文件中提取以-----BEGIN PRIVATE KEY-----开头、-----END PRIVATE KEY-----结尾的私钥保存为.key文件,随后将该私钥添加到服务端证书.pem文件中,以为这样能建立连接。请求返回状态码200,但未得到有效业务响应,仅收到SOAP Fault错误,错误码为RTL-API-1002,错误信息为“调用Web服务时发生错误”。

相关代码

import json
import requests
clientCrt = "path to client certificate\ce.crt"
certificate_secret = "path to client's private key\pkey.key"
url = "api_end_point_url"
certServer = "path to server certificate\serv.pem"
headers = {'Content-Type': 'text/xml; charset=utf-8'}
payload = """<?xml version="1.0" encoding="UTF-8" standalone="no"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="...">
   <soap:Header/>
<soap:Body>
<ns:OrigXARequest>
<Request>
.....
</Request>
</ns:OrigXARequest>
</soap:Body>
</soap:Envelope>"""

response = requests.get(url, data=payload, verify = certServer,
                    headers=headers, cert=(clientCrt,certificate_secret))
print(response.status_code)
print(response.content)
print(response.text)

输出结果

200
    b'<?xml version = "1.0" encoding = "UTF-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><soap:Fault xsi:type="soap:Fault"><faultcode>RTL-API-1002</faultcode><faultstring>Error occurred while invoking the .. Web Service.</faultstring></soap:Fault></soap:Body></soap:Envelope>'

Process finished with exit code 0
解决建议
  • 修正请求方法:SOAP协议默认使用POST方法传输请求体,当前使用requests.get()会导致服务端无法正确解析SOAP payload。将请求改为requests.post():
    response = requests.post(url, data=payload, verify=certServer,
                            headers=headers, cert=(clientCrt,certificate_secret))
    
  • 还原证书配置:不需要将客户端私钥添加到服务端证书文件中。verify参数指定的服务端证书文件只需包含服务端的CA证书或公钥证书,用于验证服务端身份;客户端证书和私钥是独立的身份凭证,保持分开存放即可。
  • 补全SOAP请求参数:代码中<Request>标签内的.....是占位符,必须替换为符合接口规范的完整业务参数,服务端可能因缺少必要参数导致调用失败。
  • 修正命名空间:payload中的xmlns:ns="..."需替换为服务端提供的正确命名空间,否则服务端无法识别请求对应的操作。
  • 排查服务端日志:RTL-API-1002属于业务级错误,建议联系服务端运维人员查看详细日志,确认具体错误原因(如权限校验失败、后端服务异常、参数格式错误等)。

内容的提问来源于stack exchange,提问作者Sanjana Basu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 06:25:21