Artifact ID: | a755147d6c14a716a2d9e5174271269330731fcbfeb828052dfd7c6a7e1ab206 |
---|---|
Ticket: | 584bfb772724c1a938f671b8a9ac1d57b2d70f58
WS::Client returns nonsense for abstract types |
User & Date: | oehhar 2018-05-11 17:49:22 |
- Appended to comment:
oehhar added on 2018-05-11 17:49:22 UTC:
A debug session I tried to find the code to find where the response namespace prefix is mapped to the auto-generated namespace prefix from the wsdl analysis.To resume:
- TCLWS namespace prefix for type "EnvelopeN": tns1
- Response XML namespace for same type: tns
Both are not mapped together resulting in a miss-interpretation of the response.
So, line 2170 of
::log::log debug "Using namespaces {$xns}"
of function
proc ::WS::Client::parseResults {serviceName operationName inXML} {
outputs:
Using namespaces { ENV http://schemas.xmlsoap.org/soap/envelope/ xsi http://www.w3.org/2001/XMLSchema-instance xs http://www.w3.org/2001/XMLSchema tns1 http://www.esri.com/schemas/ArcGIS/10.3 d http://schemas.xmlsoap.org/wsdl/soap/ xs http://www.w3.org/2001/XMLSchema}
So, here is "tns1 http://www.esri.com/schemas/ArcGIS/10.3" in "$serviceInfo targetNamespace".
Then, this is called:
::WS::Utils::convertTypeToDict
The response namespace prefix contained in the top "Envelope" tag is never looked up. It seams to be ignored. But the required information is in there:
<soap:Envelope ... xmlns:tns="http://www.esri.com/schemas/ArcGIS/10.3">
How may this work ?
IMHO there should be a match done of the header namespace prefixes to the ones saved in the wsdl.
Or is this an issue in tdom ?
Should the command
$doc selectNodesNamespaces $xns
(Line 2171 ClientSide, directly follows the debug line mentioned here at the top)
change the namespace prefixes ?
Any idea appreciated.
Thank you, Harald