One moment please...
 
Untitled Document

Exact Globe

SOAP markup for Retrieve set

What is the markup for Exact.Entities? SOAPUI fails to properly serialize the query data.

The webservices of Globe and Synergy Enterprise are built using WCF of .NET framework 4.0 and 4.5. This means that the WSDL of these services is generated by .NET itself. It is a known issue that some WSDL wrappers, as well as the SOAPUI tool have trouble generating a proper proxy based on WCF WSDL's. This issue was solved in .NET 4.5 by WCF webservices deploying a flat singular WSDL as an alternative to the multi layered WSDL that is offered by default, but not all wrappers take advantage of this single target WSDL yet so have to be explicitly pointed toward it. The URI for this WSDL can be found by opening the webservice in your browser, and copying the URI provided under the heading "You can also access the service description as a single file:". This will be the standard WSDL URI with ?wsdl being replaced by ?singleWsdl.

The main issue with the Retrieve set SOAP envelope is that the query criteria contains a variable type field for the value to be filtered on, PropertyValue. The webservice expects this field to be explicitly typed, but because in the WSDL this field is type variant, it will by default be serialized as an Object, resulting in serialization errors. This can be solved by including the W3 schema and instance namespaces, and embelish the PropertyValue tags with an explicit simple type, like date, string or integer. A markup that is SOAPUI compliant will look as follows:

 

<soapenv:Envelope
      xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:ent="http://www.exactsoftware.com/services/entities/"
      xmlns:ent1="http://www.exactsoftware.com/schemas/entities/"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <soapenv:Header/>
    <soapenv:Body>
       <ent:RetrieveSet>
          <ent:data>
             <ent1:BatchSize>10</ent1:BatchSize>
<!--
            <ent1:EntityName>?</ent1:EntityName>
-->
             <ent1:FilterQuery>
                <ent1:Properties>
                   <ent1:QueryProperty>
                      <ent1:Operation>=</ent1:Operation>
                      <ent1:PropertyName>RequestNumber</ent1:PropertyName>
                      <ent1:PropertyValue xsi:type="xs:integer">179793</ent1:PropertyValue>
                   </ent1:QueryProperty>
                </ent1:Properties>
             </ent1:FilterQuery>
<!--
             <ent1:SessionId>?</ent1:SessionId>
-->
          </ent:data>
       </ent:RetrieveSet>
    </soapenv:Body>
 </soapenv:Envelope>
 

 Note that EntityName is not necessary when using an entity specific endpoint in ESE, and that SessionID is only required for retrieving subsequent batches.

 

 

Document Number: 27.074.059

Disclaimer
Despite the continued efforts of Exact to ensure that the information in this document is as complete and up-to-date as possible, Exact can not be held accountable for the correctness and/or completeness and/or specific applicability of the published and/or requested information in this document. Exact shall not be liable for any direct, indirect, incidental, special or consequential damages, lost profits or for business interruption arising out of the use of this document. The extraction and use of information from this document remains at all times completely within the user's own risk.