Ticket Change Details

Not logged in
Overview

Artifact ID: a755147d6c14a716a2d9e5174271269330731fcbfeb828052dfd7c6a7e1ab206
Ticket: 584bfb772724c1a938f671b8a9ac1d57b2d70f58
WS::Client returns nonsense for abstract types
User & Date: oehhar 2018-05-11 17:49:22
Changes

  1. 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