저는 파이썬으로 조금 녹슬었지만 클라이언트를 사용하여 SOAP 호출을 설정해야합니다. 나는 사전 객체 만 전달하여 두 가지 메소드를 성공적으로 호출 할 수 있었지만이 부분을 설정하지 않아도이 기술을 사용하여 가능한지 확실하지 않습니다.Python Zeep SOAP 클라이언트 모듈 - 요소에 대한 속성을 설정할 수 없습니다.
'transportSettings': {
[
{'setupParameter': {'key': 'key1', 'value': 'val1'}},
{'setupParameter': {'key': 'key2', 'value': 'val2'}}
]
}
:이 같은 PARAMS 통과 시도
<xs:complexType name="transportSettings">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="setupParameter" type="tns:setupParameter" />
</xs:sequence>
</xs:complexType>
: 내부에 내장되어
<xs:complexType name="setupParameter">
<xs:sequence />
<xs:attribute name="key" type="xs:string" use="required" />
<xs:attribute name="value" type="xs:string" use="required" />
</xs:complexType>
:
이
내가에 문제가 봉투의 일부입니다 봉투 안에 있지만 작동하지 않는 것 같습니다. SOAP 메서드는 큰 유효성 검사가 없으므로setupParameter
유형의 두 항목을 만들지 만 모두
key
및
value
값이 누락되었습니다.
나를 위해 약간의 빛을 비춰주세요.
EDIT1
이 내가 복제하기 위해 노력하고있어 SoapUI (요청의 일부)의 출력입니다 : 내가했습니다,
<transportSettings>
<!--Zero or more repetitions:-->
<setupParameter key="?" value="?"/>
</transportSettings>
Edit2가를
그래서 SOAP 요청 및 응답을 출력하는 클라이언트에 대한 플러그인을 문서에 설명 된대로 추가했습니다.이 요청은
입니다. (210)<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<ns0:provisionService xmlns:ns0="http://ntc.nms.slm.hub.provisioning">
<service>
<vn>test</vn>
<serviceClass>Satellite Internet Access - 3100 Forward</serviceClass>
<linkType>MULTIPLE_ACCESS</linkType>
<channelCarrier>false</channelCarrier>
<transportSettings>
<setupParameter key="" value=""/>
</transportSettings>
<multicastRequired>false</multicastRequired>
<linkTopology>POINT_TO_POINT</linkTopology>
<serviceGuiOptions>
<enableBooking>true</enableBooking>
<enableUnManagedTransmitter>false</enableUnManagedTransmitter>
<enableCustomSetupParameters>true</enableCustomSetupParameters>
</serviceGuiOptions>
<qosParameters>
<bestEffortPirFixed>0</bestEffortPirFixed>
<bestEffortPirPct>0</bestEffortPirPct>
<criticalData1CirFixed>0</criticalData1CirFixed>
<criticalData1CirPct>0</criticalData1CirPct>
<criticalData1PirFixed>0</criticalData1PirFixed>
<criticalData1PirPct>0</criticalData1PirPct>
<criticalData2CirFixed>0</criticalData2CirFixed>
<criticalData2CirPct>0</criticalData2CirPct>
<criticalData2PirFixed>0</criticalData2PirFixed>
<criticalData2PirPct>0</criticalData2PirPct>
<criticalData3CirFixed>0</criticalData3CirFixed>
<criticalData3CirPct>0</criticalData3CirPct>
<criticalData3PirFixed>0</criticalData3PirFixed>
<criticalData3PirPct>0</criticalData3PirPct>
<realTime1CirFixed>6000</realTime1CirFixed>
<realTime1CirPct>0</realTime1CirPct>
<realTime2CirFixed>0</realTime2CirFixed>
<realTime2CirPct>0</realTime2CirPct>
<realTime3CirFixed>0</realTime3CirFixed>
<realTime3CirPct>80</realTime3CirPct>
</qosParameters>
</service>
</ns0:provisionService>
</soap-env:Body>
</soap-env:Envelope>
(이런 식으로 전달하여 -
client.service.serviceName(inputDict)
을)이 입력 사전에서 만든
:
{
'serviceClass': '${serviceName}',
'vn': '${testVnName}',
'linkType': 'MULTIPLE_ACCESS',
'linkTopology': 'POINT_TO_POINT',
'serviceGuiOptions': {
'enableBooking': 1,
'enableUnManagedTransmitter': 0,
'enableCustomSetupParameters': 1
},
'multicastRequired': 0,
'channelCarrier': 0,
'qosParameters': {
'realTime1CirFixed': 6000,
'realTime1CirPct': 0,
'realTime2CirFixed': 0,
'realTime2CirPct': 0,
'realTime3CirFixed': 0,
'realTime3CirPct': 80,
'criticalData1CirFixed': 0,
'criticalData1CirPct': 0,
'criticalData1PirFixed': 0,
'criticalData1PirPct': 0,
'criticalData2CirFixed': 0,
'criticalData2CirPct': 0,
'criticalData2PirFixed': 0,
'criticalData2PirPct': 0,
'criticalData3CirFixed': 0,
'criticalData3CirPct': 0,
'criticalData3PirFixed': 0,
'criticalData3PirPct': 0,
'bestEffortPirFixed': 0,
'bestEffortPirPct': 0
},
'transportSettings': [
{'setupParameter': {'key': 'forwardGateway', 'value': 'dialog'}},
{'setupParameter': {'key': 'referenceServiceProfileDomainName', 'value': 'hno'}}
]
}
그리고 나는 (단지 문제가있는 부분)은 원하는 :
<transportSettings>
<setupParameter key="key1" value="val1"/>
<setupParameter key="key2" value="val2"/>
<setupParameter key="key3" value="val3"/>
</transportSettings>