Overview
Artifact ID: | a755147d6c14a716a2d9e5174271269330731fcbfeb828052dfd7c6a7e1ab206 |
---|---|
Ticket: | 584bfb772724c1a938f671b8a9ac1d57b2d70f58
WS::Client returns nonsense for abstract types |
User & Date: | oehhar 2018-05-11 17:49:22 |
Changes
- Appended to comment:
<hr /><i>oehhar added on 2018-05-11 17:49:22 UTC:</i><br /> 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. <hr /> So, line 2170 of <verbatim> ::log::log debug "Using namespaces {$xns}" </verbatim> of function <verbatim> proc ::WS::Client::parseResults {serviceName operationName inXML} { </verbatim> outputs: <verbatim> 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} </verbatim> So, here is "tns1 http://www.esri.com/schemas/ArcGIS/10.3" in "$serviceInfo targetNamespace". Then, this is called: <verbatim> ::WS::Utils::convertTypeToDict </verbatim> 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: <verbatim> <soap:Envelope ... xmlns:tns="http://www.esri.com/schemas/ArcGIS/10.3"> </verbatim> 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 <verbatim> $doc selectNodesNamespaces $xns </verbatim> (Line 2171 ClientSide, directly follows the debug line mentioned here at the top) change the namespace prefixes ? Any idea appreciated. Thank you, Harald