首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ERCOT API:使用Python发送带有签名和二进制安全令牌的SOAP

ERCOT API:使用Python发送带有签名和二进制安全令牌的SOAP
EN

Stack Overflow用户
提问于 2022-08-24 10:50:53
回答 1查看 168关注 0票数 1

我有下面的代码,用于将数据发布到SOAP服务器。我用过zeep模块,但是出错了。zeep模块支持https调用吗?-执行ssl.py,adapter.py.etc时会出现错误。我们可以在没有zeep的情况下创建请求并以其他方式应用二进制签名吗?

代码语言:javascript
运行
复制
import os
from zeep import Client, Settings
from zeep.transports import Transport
from requests import Session
from requests_pkcs12 import Pkcs12Adapter
from zeep.wsse.signature import BinarySignature
import random
import logging.config
from pathlib import Path
from tempfile import NamedTemporaryFile
from cryptography.hazmat.primitives.serialization import Encoding, PrivateFormat, NoEncryption
from cryptography.hazmat.primitives.serialization.pkcs12 import load_key_and_certificates

# USE THE MOST VERBOSE LOGGING LEVEL
logging.config.dictConfig({
 'version': 1,
 'formatters': {
 'verbose': {
 'format': '%(name)s: %(message)s'
 }
 },
 'handlers': {
 'console': {
 'level': 'DEBUG',
 'class': 'logging.StreamHandler',
 'formatter': 'verbose',
 },
 },
 'loggers': {
 'zeep.transports': {
 'level': 'DEBUG',
 'propagate': True,
 'handlers': ['console'],
 },
 }
})


# Source: https://gist.github.com/erikbern/756b1d8df2d1487497d29b90e81f8068
@contextlib.contextmanager
def pfx_to_pem(pfx_path, pfx_password):
 ''' Decrypts the .pfx file to be used with requests. '''
 pfx = Path(pfx_path).read_bytes()
 private_key, main_cert, add_certs = load_key_and_certificates(pfx, pfx_password.encode('utf-8'), None)

 with NamedTemporaryFile(suffix='.pem', delete=False) as t_pem:
   with open(t_pem.name, 'wb') as pem_file:
     pem_file.write(private_key.private_bytes(Encoding.PEM, PrivateFormat.PKCS8, NoEncryption()))
     pem_file.write(main_cert.public_bytes(Encoding.PEM))
     for ca in add_certs:
       pem_file.write(ca.public_bytes(Encoding.PEM))
   yield t_pem.name


def generate_nonce(length=15):
 """Generate pseudorandom number."""
 return ''.join([str(random.randint(0, 9)) for i in range(length)])


# CERTIFICATES PATHS
api_pfx_key = os.path.join('C:\\ALL\\ERCOT\\API Outplan OSI TCC MOTE.pfx')
api_certificate = os.path.join('C:\\ALL\\ERCOT\\OSITCC.cer')

# SETUP
wsdl_file = os.path.join('C:\\ALL\\ERCOT\\Nodal.wsdl')

#wsdl_file = "https://testmisapi.ercot.com/2007-08/Nodal/eEDS/EWS/?WSDL"
api_base_url = "https://testmisapi.ercot.com/2007-08/Nodal/eEDS/EWS/"
session = Session()
session.mount(api_base_url,
 Pkcs12Adapter(pkcs12_filename=api_pfx_key, pkcs12_password='AEP'))
#session.verify = False

transport = Transport(session=session)
settings = Settings(forbid_entities=False)

# CREATE CLIENT
print("Creating client.")
with pfx_to_pem(pfx_path=api_pfx_key, pfx_password='AEP') as pem_fle:
 client = Client(wsdl_file, settings=settings, transport=transport,
 wsse=BinarySignature(pem_fle, api_certificate))

 print("Making request.")
 request_data = {
 "Header": {
 "Verb": "get",
 "Noun": "SystemStatus",
 "ReplayDetection": {
 "Nonce": generate_nonce(),
 "Created": "07-06-2022"},
 "Revision": "1",
 "Source": "TDSP",
 "UserID": "API_OutplanOSITCC",
 },
 }
 print("Call URL")
 print(client.service.MarketTransactions(**request_data))```


but while running this one , I am getting the below error - "C:\ALL\Python 3.9\PythonDev\python.exe" "C:/ALL/Python 3.10/PythonDev/ERCOT_API.py"
C:\ALL\Python 3.9\PythonDev\lib\site-packages\OpenSSL\crypto.py:1133: CryptographyDeprecationWarning: This version of cryptography contains a temporary pyOpenSSL fallback path. Upgrade pyOpenSSL now.
  cert._x509 = crypto_cert._x509
Creating client.
zeep.transports: Loading remote data from: http://www.w3.org/2001/xml.xsd
Making request.
Call URL
zeep.transports: HTTP Post to https://testmisapi.ercot.com/2007-08/Nodal/eEDS/EWS:
<?xml version='1.0' encoding='utf-8'?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><soap-env:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#id-c773cb6e-3a71-4d59-8a83-e3e4df97cd03">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>jhEnAC9hpCVo1d/0+2Gj7bO2IzE=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>XhJV0FuRemJRlgwGoLLo13cR+vjtUartO2eyIj9rjQoOVR4NES3ULki26wCrF5nT
ABAFjdh7nr9BQry4L+ZcnQt2T73SMsFBUaSWFhp2jEuHIPdnHhnkRqNMJt+p+cPS
cXojjDlvjmqB9uEF5wk/dEQIfWdp0aE5tlnV7qRJUh7Mm43k43vVCOW+Sn3i3k7a
7Td74UukP7XsENL0x804DAEmYI686gWNCBzSyNojNWcT/1SKa+gaM1mqe9KPOzpq
dFOUOYLyEDqeYJdUTwTzBGHatuWX536fFcl7AOp9aBYCtFCwyoQ5cweSdZdATd47
Hp/TtICaKb8Xg2XZ/c3wHA==</SignatureValue>
<KeyInfo>
<wsse:SecurityTokenReference><wsse:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#id-6a68c676-049c-4dc8-9f59-9dcb6a173bb0"/></wsse:SecurityTokenReference></KeyInfo>
</Signature><wsse:BinarySecurityToken xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ns1:Id="id-6a68c676-049c-4dc8-9f59-9dcb6a173bb0">MIIGXDCCBUSgAwIBAgIQOQpxxst8nF94i/e9RtEgCzANBgkqhkiG9w0BAQsFADBm
MQswCQYDVQQGEwJVUzE0MDIGA1UEChMrRWxlY3RyaWMgUmVsaWFiaWxpdHkgQ291
bmNpbCBvZiBUZXhhcywgSW5jLjEhMB8GA1UEAxMYRVJDT1QgRW50ZXJwcmlzZSBU
RVNUIENBMB4XDTIyMDUwMzAwMDAwMFoXDTIzMDUwMzIzNTk1OVowggEfMTQwMgYD
VQQKDCtFbGVjdHJpYyBSZWxpYWJpbGl0eSBDb3VuY2lsIG9mIFRleGFzLCBJbmMu
MScwJQYDVQQLDB5FbXBsb3llZUlEIC0gQVBJX091dHBsYW5PU0lUQ0MxLjAsBgNV
BAsMJU1QIC0gQUVQIFRFWEFTIENFTlRSQUwgQ09NUEFOWSAoVERTUCkxIDAeBgNV
BAsMF0RVTlMgTnVtYmVyIC0gMDA3OTI0NzcyMR4wHAYDVQQLDBVFUkNPVCBFbnRl
cnByaXNlIE1PVEUxGjAYBgNVBAsMEUFQSV9PdXRwbGFuT1NJVENDMRIwEAYDVQQL
DAkwMDc5MjQ3NzIxHDAaBgNVBAMME0FQSSBPdXRwbGFuIE9TSSBUQ0MwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCxM8X0LhC+K8aneHMarxg9cjHyB5AU
z9LgFWf1+gdjLMjo6gsQC3H2DbBSYDxb2S9W8om+qd1kY213KVIRgig9IP2/3/gP
3ty35O2stHGKhK2xWjXc5acDLb4mVchhjwd2j80KTC8GuoO6IjR9gp6/joSoewWb
s4QYyb1XsA7s5EXX/bwh5aKcMrMKoACDrYW+DsQ9fVn6SgprY71x4g/J9DXOolwg
ULuLYeWBkwU5IkCGw/V8A2iqcAXEza5BPxxjjdzaxaJgL9iYiqjN+rFrOGPpGtt4
cWmR3S4iESuOdDSnMnZrU2TmT+k0zLmrZzx43OyowAOXJxHppECC+U7XAgMBAAGj
ggJJMIICRTAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIFoDAWBgNVHSUBAf8E
DDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUU3nJUKn/NV/hZsf9TbH59J23tFcwXQYD
VR0fBFYwVDBSoFCgToZMaHR0cDovL3BraS1jcmwuc3ltYXV0aC5jb20vY2FfODBh
OWVlODkyY2IwYjhkNDczODgwMTA4YzIyODI5NGEvTGF0ZXN0Q1JMLmNybDCCAQMG
CCsGAQUFBwEBBIH2MIHzMCcGCCsGAQUFBzABhhtodHRwOi8vcGtpLW9jc3Auc3lt
YXV0aC5jb20wgccGCCsGAQUFBzAChoG6bGRhcDovL2RpcmVjdG9yeS5zeW1hdXRo
LmNvbS9DTiUyMCUzRCUyMEVSQ09UJTIwRW50ZXJwcmlzZSUyMFRFU1QlMjBDQSUy
QyUyME8lMjAlM0QlMjAlMjJFbGVjdHJpYyUyMFJlbGlhYmlsaXR5JTIwQ291bmNp
bCUyMG9mJTIwVGV4YXMlMkMlMjBJbmMuJTIyJTJDJTIwQyUyMCUzRCUyMFVTP2NB
Q2VydGlmaWNhdGU7YmluYXJ5MB8GA1UdIwQYMBaAFM9vgLFH3rW5jzTpa58gBemf
5RwPMCwGCmCGSAGG+EUBEAMEHjAcBhJghkgBhvhFARABAgMEAZTtjgwWBjQ1MDY3
NzA5BgpghkgBhvhFARAFBCswKQIBABYkYUhSMGNITTZMeTl3YTJrdGNtRXVjM2x0
WVhWMGFDNWpiMjA9MA0GCSqGSIb3DQEBCwUAA4IBAQAF/6dMajWt17ytqWu3HqZB
MmhKmpopI6sEJ1Nx9XX2HI7WonOe6YehTEinsuQYbI1GPxylu81C/gaqXICWTMm3
qozwNAwP4AyO0K0C4q6Txh7slwn7D0uuayPlVpClOcVCeN5T8wV0ZGIdyvCOOoWp
ATTqo7GlbmzqeHo+XVxYcF6D9hJouXS5SvTzdx3qlSA6faV3L+ZYOyChcrKsGZU4
HS1BKrKEOV+y+oIQXRMIrLzlOJzM4HFH0tcFTz8ZhibsXT4Iwn2VCPIUA9WScQjw
gW2dia0pU9ep08W8220X2OVpAC5SE9/iK85lHN9+ZJ+QpJ2BFpit+KUUNNx0C6du</wsse:BinarySecurityToken></wsse:Security></soap-env:Header><soap-env:Body xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" ns1:Id="id-c773cb6e-3a71-4d59-8a83-e3e4df97cd03"><ns0:RequestMessage xmlns:ns0="http://www.ercot.com/schema/2007-06/nodal/ews/message"><ns0:Header><ns0:Verb>get</ns0:Verb><ns0:Noun>SystemStatus</ns0:Noun><ns0:ReplayDetection><ns0:Nonce>576394325909862</ns0:Nonce><ns0:Created>07-06-2022</ns0:Created></ns0:ReplayDetection><ns0:Revision>1</ns0:Revision><ns0:Source>TDSP</ns0:Source><ns0:UserID>API_OutplanOSITCC</ns0:UserID></ns0:Header></ns0:RequestMessage></soap-env:Body></soap-env:Envelope>
Traceback (most recent call last):
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\urllib3\connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\urllib3\connectionpool.py", line 386, in _make_request
    self._validate_conn(conn)
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\urllib3\connectionpool.py", line 1040, in _validate_conn
    conn.connect()
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\urllib3\connection.py", line 414, in connect
    self.sock = ssl_wrap_socket(
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\urllib3\util\ssl_.py", line 449, in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\urllib3\util\ssl_.py", line 493, in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
  File "C:\ALL\Python 3.9\PythonDev\lib\ssl.py", line 501, in wrap_socket
    return self.sslsocket_class._create(
  File "C:\ALL\Python 3.9\PythonDev\lib\ssl.py", line 1041, in _create
    self.do_handshake()
  File "C:\ALL\Python 3.9\PythonDev\lib\ssl.py", line 1310, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1129)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\requests\adapters.py", line 489, in send
    resp = conn.urlopen(
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\urllib3\connectionpool.py", line 785, in urlopen
    retries = retries.increment(
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\urllib3\util\retry.py", line 592, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='testmisapi.ercot.com', port=443): Max retries exceeded with url: /2007-08/Nodal/eEDS/EWS (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1129)')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ALL\Python 3.10\PythonDev\ERCOT_API.py", line 98, in <module>
    print(client.service.MarketTransactions(**request_data))
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\zeep\proxy.py", line 46, in __call__
    return self._proxy._binding.send(
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\zeep\wsdl\bindings\soap.py", line 127, in send
    response = client.transport.post_xml(options["address"], envelope, http_headers)
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\zeep\transports.py", line 107, in post_xml
    return self.post(address, message, headers)
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\zeep\transports.py", line 73, in post
    response = self.session.post(
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\requests\sessions.py", line 635, in post
    return self.request("POST", url, data=data, json=json, **kwargs)
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\requests\sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\requests\sessions.py", line 701, in send
    r = adapter.send(request, **kwargs)
  File "C:\ALL\Python 3.9\PythonDev\lib\site-packages\requests\adapters.py", line 563, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='testmisapi.ercot.com', port=443): Max retries exceeded with url: /2007-08/Nodal/eEDS/EWS (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1129)')))

Process finished with exit code 1

Could anyone please suggest how to resolve this error?

Thank you so much for your time and help.
@Anna Geller ,@Preethi Vaidyanathan -could you please help with this?

Thanks
Sugata
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-30 05:25:05

这不是一个答案:只是尝试更新并请求帮助这个-编辑版本后,改变了代码:我已经解决了SSL的问题,我现在可以连接和得到响应。但是,SOAP是以不同于合作伙伴预期的方式生成的。下面的XML是由合作伙伴预期的-

代码语言:javascript
运行
复制
   <soapenv:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-B526F1951BD81739D3166098806721395">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</wsse:BinarySecurityToken><ds:Signature Id="SIG-B526F1951BD81739D3166098806721599" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces PrefixList="soapenv wsu" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI="#id-B526F1951BD81739D3166098806721398"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces PrefixList="wsu" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>kVIVovzVfbEzUdlGbrk9sDvKf6A=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>f4Ds96E3rsWfUu7+LxATRZJ2jCOWTkdzg9pySOuAoHfwl0o1/uhNo/KMGxtYZHX0pwbPw5Hhl0wa0m+4yX4BJybnyfMATWfHL8xER8XLUqXFdu4Gxg/3vQt9m5Es3Tt9lkchbTk1DXnFtm6dVryrpcgD0SZ6hktA33HrBuW5rvTir1AEgAN+lfsjXpcxc5pXAXoIBDcoiM8FVr8M6Sc7BzcIRImkRG3HGlBNbc0MTBINDr9gAd+VeEkj65DSRhJbsDkMmeIoBjhcxAG0DXrFfXgeFGqPGJV+MUCsgIQ3QX7pI1oz5ydCQnaTIlEGX+RWcJHnxEGK7Ip2Cxfw+9UrXg==</ds:SignatureValue><ds:KeyInfo Id="KI-B526F1951BD81739D3166098806721396"><wsse:SecurityTokenReference wsu:Id="STR-B526F1951BD81739D3166098806721397"><wsse:Reference URI="#X509-B526F1951BD81739D3166098806721395" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></ds:KeyInfo></ds:Signature></wsse:Security></soapenv:Header>
   <soapenv:Body wsu:Id="id-B526F1951BD81739D3166098806721398" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
      <RequestMessage xmlns="http://www.ercot.com/schema/2007-06/nodal/ews/message">
         <Header>
            <Verb>get</Verb>
            <Noun>SystemStatus</Noun>
            <ReplayDetection>
               <Nonce>9938998019</Nonce>
               <Created>2022-08-20T03:23:00-06:00</Created>
            </ReplayDetection>
            <Revision>004</Revision>
            <Source>API Outplan OSI TCC</Source>
            <!--Optional:-->
            <UserID>API_OutplanOSITCC</UserID>
            
         </Header>
 
      </RequestMessage>
   </soapenv:Body>
</soapenv:Envelope>

由我的代码生成的XML -

代码语言:javascript
运行
复制
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:Header>
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
                <SignedInfo>
                    <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
                    <Reference URI="#id-9d18c15b-7ea9-47f0-b1c5-d7e1092ba7e2">
                        <Transforms>
                            <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                        </Transforms>
                        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                        <DigestValue>Qfdgh1Pl7BEYpLkQkgwiqq+2bMQ=</DigestValue>
                    </Reference>
                </SignedInfo>
                <SignatureValue>m/kqFxxOW4oeSBtHIcfJePo1d0vupLhDC04Ju2u6cB3TP3RbGc6Q+R1r5cokVu6V
fnT2p5e6/bbb1ekl+Xw/e9AByb82YqesUDibhXTDw47jjtN7q+sJotLKD0CzL+4Z
IVsizpOASoFBj6BaB+Fkdk6pw8cC+1ZwQtpQIR9J4bLUSRMHWU3dr7sBRt7Rb7Nb
f1L/5CtiMXi+jtfQvmmdw5kHX76a3USVMBynH8BJR+HFwpabDa00tVjfPMm/mWUa
XFnTjRKVFs4LjA6xgYH6PE6kO37spqiss+w9bSYuv4oMLslD6fOTkd1geVtXWOar
iqeDb6Z8qKvpE4gEAjN9HQ==</SignatureValue>
                <KeyInfo>
                    <wsse:SecurityTokenReference>
                        <wsse:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#id-b9a43d44-6015-419b-8e84-87a537c4cb7a"/>
                    </wsse:SecurityTokenReference>
                </KeyInfo>
            </Signature>
            <wsse:BinarySecurityToken xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ns1:Id="id-b9a43d44-6015-419b-8e84-87a537c4cb7a">MIIGXDCCBUSgAwIBAgIQOQpxxst8nF94i/e9RtEgCzANBgkqhkiG9w0BAQsFADBm
MQswCQYDVQQGEwJVUzE0MDIGA1UEChMrRWxlY3RyaWMgUmVsaWFiaWxpdHkgQ291
bmNpbCBvZiBUZXhhcywgSW5jLjEhMB8GA1UEAxMYRVJDT1QgRW50ZXJwcmlzZSBU
RVNUIENBMB4XDTIyMDUwMzAwMDAwMFoXDTIzMDUwMzIzNTk1OVowggEfMTQwMgYD
VQQKDCtFbGVjdHJpYyBSZWxpYWJpbGl0eSBDb3VuY2lsIG9mIFRleGFzLCBJbmMu
MScwJQYDVQQLDB5FbXBsb3llZUlEIC0gQVBJX091dHBsYW5PU0lUQ0MxLjAsBgNV
BAsMJU1QIC0gQUVQIFRFWEFTIENFTlRSQUwgQ09NUEFOWSAoVERTUCkxIDAeBgNV
BAsMF0RVTlMgTnVtYmVyIC0gMDA3OTI0NzcyMR4wHAYDVQQLDBVFUkNPVCBFbnRl
cnByaXNlIE1PVEUxGjAYBgNVBAsMEUFQSV9PdXRwbGFuT1NJVENDMRIwEAYDVQQL
DAkwMDc5MjQ3NzIxHDAaBgNVBAMME0FQSSBPdXRwbGFuIE9TSSBUQ0MwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCxM8X0LhC+K8aneHMarxg9cjHyB5AU
z9LgFWf1+gdjLMjo6gsQC3H2DbBSYDxb2S9W8om+qd1kY213KVIRgig9IP2/3/gP
3ty35O2stHGKhK2xWjXc5acDLb4mVchhjwd2j80KTC8GuoO6IjR9gp6/joSoewWb
s4QYyb1XsA7s5EXX/bwh5aKcMrMKoACDrYW+DsQ9fVn6SgprY71x4g/J9DXOolwg
ULuLYeWBkwU5IkCGw/V8A2iqcAXEza5BPxxjjdzaxaJgL9iYiqjN+rFrOGPpGtt4
cWmR3S4iESuOdDSnMnZrU2TmT+k0zLmrZzx43OyowAOXJxHppECC+U7XAgMBAAGj
ggJJMIICRTAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIFoDAWBgNVHSUBAf8E
DDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUU3nJUKn/NV/hZsf9TbH59J23tFcwXQYD
VR0fBFYwVDBSoFCgToZMaHR0cDovL3BraS1jcmwuc3ltYXV0aC5jb20vY2FfODBh
OWVlODkyY2IwYjhkNDczODgwMTA4YzIyODI5NGEvTGF0ZXN0Q1JMLmNybDCCAQMG
CCsGAQUFBwEBBIH2MIHzMCcGCCsGAQUFBzABhhtodHRwOi8vcGtpLW9jc3Auc3lt
YXV0aC5jb20wgccGCCsGAQUFBzAChoG6bGRhcDovL2RpcmVjdG9yeS5zeW1hdXRo
LmNvbS9DTiUyMCUzRCUyMEVSQ09UJTIwRW50ZXJwcmlzZSUyMFRFU1QlMjBDQSUy
QyUyME8lMjAlM0QlMjAlMjJFbGVjdHJpYyUyMFJlbGlhYmlsaXR5JTIwQ291bmNp
bCUyMG9mJTIwVGV4YXMlMkMlMjBJbmMuJTIyJTJDJTIwQyUyMCUzRCUyMFVTP2NB
Q2VydGlmaWNhdGU7YmluYXJ5MB8GA1UdIwQYMBaAFM9vgLFH3rW5jzTpa58gBemf
5RwPMCwGCmCGSAGG+EUBEAMEHjAcBhJghkgBhvhFARABAgMEAZTtjgwWBjQ1MDY3
NzA5BgpghkgBhvhFARAFBCswKQIBABYkYUhSMGNITTZMeTl3YTJrdGNtRXVjM2x0
WVhWMGFDNWpiMjA9MA0GCSqGSIb3DQEBCwUAA4IBAQAF/6dMajWt17ytqWu3HqZB
MmhKmpopI6sEJ1Nx9XX2HI7WonOe6YehTEinsuQYbI1GPxylu81C/gaqXICWTMm3
qozwNAwP4AyO0K0C4q6Txh7slwn7D0uuayPlVpClOcVCeN5T8wV0ZGIdyvCOOoWp
ATTqo7GlbmzqeHo+XVxYcF6D9hJouXS5SvTzdx3qlSA6faV3L+ZYOyChcrKsGZU4
HS1BKrKEOV+y+oIQXRMIrLzlOJzM4HFH0tcFTz8ZhibsXT4Iwn2VCPIUA9WScQjw
gW2dia0pU9ep08W8220X2OVpAC5SE9/iK85lHN9+ZJ+QpJ2BFpit+KUUNNx0C6du</wsse:BinarySecurityToken>
        </wsse:Security>
    </soap-env:Header>
    <soap-env:Body xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" ns1:Id="id-9d18c15b-7ea9-47f0-b1c5-d7e1092ba7e2">
        <ns0:RequestMessage xmlns:ns0="http://www.ercot.com/schema/2007-06/nodal/ews/message">
            <ns0:Header>
                <ns0:Verb>get</ns0:Verb>
                <ns0:Noun>SystemStatus</ns0:Noun>
                <ns0:ReplayDetection>
                    <ns0:Nonce>751702826976894</ns0:Nonce>
                    <ns0:Created>2022-08-29T21:30:00-06:00</ns0:Created>
                </ns0:ReplayDetection>
                <ns0:Revision>1</ns0:Revision>
                <ns0:Source>API Outplan OSI TCC</ns0:Source>
                <ns0:UserID>API_OutplanOSITCC</ns0:UserID>
            </ns0:Header>
        </ns0:RequestMessage>
    </soap-env:Body>
</soap-env:Envelope>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73471838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档