Written by

Project Manager & Head of Interoperability at Salutic Soluciones, S.L.
Question Kurro Lopez · Jun 24, 2019

Create a Pass-through SOAP WebService

Hi all,

I'm triying to create a SOAP Pass-through acording to Configuring Pass-through Business Services instructions, but I'm not able to run it sad

I'm using the following WebService

http://www.dneonline.com/calculator.asmx?wsdl

I've created both items

CalculatorSOAPCSPServ
  • Classname: EnsLib.SOAP.GenericService 
  • Target Config Name: CalculatorSOAPCSPOp
  • Port: Empty
  • Enable Standard Request: Checked
  • Pool size: 0
CalculatorSOAPCSPOp

Also, I've created the Web Application using the following parameters:

Name: /SOAPpassthrough

Dispatch Class: EnsLib.SOAP.GenericServer

If I ask directly the WSDL to Calculator WebService it retrives this XML:

http://www.dneonline.com/calculator.asmx?wsdl

<?xml version="1.0" encoding="utf-8"?><wsdl:definitionsxmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><wsdl:types><s:schemaelementFormDefault="qualified" targetNamespace="http://tempuri.org/"><s:elementname="Add"><s:complexType><s:sequence><s:elementminOccurs="1" maxOccurs="1" name="intA" type="s:int" /><s:elementminOccurs="1" maxOccurs="1" name="intB" type="s:int" /></s:sequence></s:complexType></s:element><s:elementname="AddResponse"><s:complexType><s:sequence><s:elementminOccurs="1" maxOccurs="1" name="AddResult" type="s:int" /></s:sequence></s:complexType></s:element><s:elementname="Subtract"><s:complexType><s:sequence><s:elementminOccurs="1" maxOccurs="1" name="intA" type="s:int" /><s:elementminOccurs="1" maxOccurs="1" name="intB" type="s:int" /></s:sequence></s:complexType></s:element><s:elementname="SubtractResponse"><s:complexType><s:sequence><s:elementminOccurs="1" maxOccurs="1" name="SubtractResult" type="s:int" /></s:sequence></s:complexType></s:element><s:elementname="Multiply"><s:complexType><s:sequence><s:elementminOccurs="1" maxOccurs="1" name="intA" type="s:int" /><s:elementminOccurs="1" maxOccurs="1" name="intB" type="s:int" /></s:sequence></s:complexType></s:element><s:elementname="MultiplyResponse"><s:complexType><s:sequence><s:elementminOccurs="1" maxOccurs="1" name="MultiplyResult" type="s:int" /></s:sequence></s:complexType></s:element><s:elementname="Divide"><s:complexType><s:sequence><s:elementminOccurs="1" maxOccurs="1" name="intA" type="s:int" /><s:elementminOccurs="1" maxOccurs="1" name="intB" type="s:int" /></s:sequence></s:complexType></s:element><s:elementname="DivideResponse"><s:complexType><s:sequence><s:elementminOccurs="1" maxOccurs="1" name="DivideResult" type="s:int" /></s:sequence></s:complexType></s:element></s:schema></wsdl:types><wsdl:messagename="AddSoapIn"><wsdl:partname="parameters" element="tns:Add" /></wsdl:message><wsdl:messagename="AddSoapOut"><wsdl:partname="parameters" element="tns:AddResponse" /></wsdl:message><wsdl:messagename="SubtractSoapIn"><wsdl:partname="parameters" element="tns:Subtract" /></wsdl:message><wsdl:messagename="SubtractSoapOut"><wsdl:partname="parameters" element="tns:SubtractResponse" /></wsdl:message><wsdl:messagename="MultiplySoapIn"><wsdl:partname="parameters" element="tns:Multiply" /></wsdl:message><wsdl:messagename="MultiplySoapOut"><wsdl:partname="parameters" element="tns:MultiplyResponse" /></wsdl:message><wsdl:messagename="DivideSoapIn"><wsdl:partname="parameters" element="tns:Divide" /></wsdl:message><wsdl:messagename="DivideSoapOut"><wsdl:partname="parameters" element="tns:DivideResponse" /></wsdl:message><wsdl:portTypename="CalculatorSoap"><wsdl:operationname="Add"><wsdl:documentationxmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Adds two integers. This is a test WebService. ©DNE Online</wsdl:documentation><wsdl:inputmessage="tns:AddSoapIn" /><wsdl:outputmessage="tns:AddSoapOut" /></wsdl:operation><wsdl:operationname="Subtract"><wsdl:inputmessage="tns:SubtractSoapIn" /><wsdl:outputmessage="tns:SubtractSoapOut" /></wsdl:operation><wsdl:operationname="Multiply"><wsdl:inputmessage="tns:MultiplySoapIn" /><wsdl:outputmessage="tns:MultiplySoapOut" /></wsdl:operation><wsdl:operationname="Divide"><wsdl:inputmessage="tns:DivideSoapIn" /><wsdl:outputmessage="tns:DivideSoapOut" /></wsdl:operation></wsdl:portType><wsdl:bindingname="CalculatorSoap" type="tns:CalculatorSoap"><soap:bindingtransport="http://schemas.xmlsoap.org/soap/http" /><wsdl:operationname="Add"><soap:operationsoapAction="http://tempuri.org/Add" style="document" /><wsdl:input><soap:bodyuse="literal" /></wsdl:input><wsdl:output><soap:bodyuse="literal" /></wsdl:output></wsdl:operation><wsdl:operationname="Subtract"><soap:operationsoapAction="http://tempuri.org/Subtract" style="document" /><wsdl:input><soap:bodyuse="literal" /></wsdl:input><wsdl:output><soap:bodyuse="literal" /></wsdl:output></wsdl:operation><wsdl:operationname="Multiply"><soap:operationsoapAction="http://tempuri.org/Multiply" style="document" /><wsdl:input><soap:bodyuse="literal" /></wsdl:input><wsdl:output><soap:bodyuse="literal" /></wsdl:output></wsdl:operation><wsdl:operationname="Divide"><soap:operationsoapAction="http://tempuri.org/Divide" style="document" /><wsdl:input><soap:bodyuse="literal" /></wsdl:input><wsdl:output><soap:bodyuse="literal" /></wsdl:output></wsdl:operation></wsdl:binding><wsdl:bindingname="CalculatorSoap12" type="tns:CalculatorSoap"><soap12:bindingtransport="http://schemas.xmlsoap.org/soap/http" /><wsdl:operationname="Add"><soap12:operationsoapAction="http://tempuri.org/Add" style="document" /><wsdl:input><soap12:bodyuse="literal" /></wsdl:input><wsdl:output><soap12:bodyuse="literal" /></wsdl:output></wsdl:operation><wsdl:operationname="Subtract"><soap12:operationsoapAction="http://tempuri.org/Subtract" style="document" /><wsdl:input><soap12:bodyuse="literal" /></wsdl:input><wsdl:output><soap12:bodyuse="literal" /></wsdl:output></wsdl:operation><wsdl:operationname="Multiply"><soap12:operationsoapAction="http://tempuri.org/Multiply" style="document" /><wsdl:input><soap12:bodyuse="literal" /></wsdl:input><wsdl:output><soap12:bodyuse="literal" /></wsdl:output></wsdl:operation><wsdl:operationname="Divide"><soap12:operationsoapAction="http://tempuri.org/Divide" style="document" /><wsdl:input><soap12:bodyuse="literal" /></wsdl:input><wsdl:output><soap12:bodyuse="literal" /></wsdl:output></wsdl:operation></wsdl:binding><wsdl:servicename="Calculator"><wsdl:portname="CalculatorSoap" binding="tns:CalculatorSoap"><soap:addresslocation="http://www.dneonline.com/calculator.asmx" /></wsdl:port><wsdl:portname="CalculatorSoap12" binding="tns:CalculatorSoap12"><soap12:addresslocation="http://www.dneonline.com/calculator.asmx" /></wsdl:port></wsdl:service></wsdl:definitions>

 

However, If I'm using the passthrow SOAP it retrieves the following:

http://localhost:57772/SOAPpassthrough/CalculatorSOAPCSPServ/calculator…

<?xml version="1.0" encoding="UTF-8"?><definitionsxmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://tempuri.org" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://tempuri.org"><types/><portTypename="MyEnsembleRequestWebServiceSoap"/><bindingname="MyEnsembleRequestWebServiceSoap" type="s0:MyEnsembleRequestWebServiceSoap"><soap:bindingtransport="http://schemas.xmlsoap.org/soap/http" style="document"/></binding><servicename="MyEnsembleRequestWebService"><portname="MyEnsembleRequestWebServiceSoap" binding="s0:MyEnsembleRequestWebServiceSoap"><soap:addresslocation="http://localhost:57772/SOAPpassthrough/CalculatorSOAPCSPServ/EnsLib.SOAP.GenericService.cls"/></port></service></definitions>

 

According to the documentacion, I should have the same result in both calls

What is wrong?

Best regards,

Francisco López

Comments

Murillo Braga · Apr 15, 2020

Hello Francisco,

Have you managed to do this? I have a similar request to build a pass-through SOAP WebService.

Thanks!

0
Ben Spead  May 15, 2020 to Kurro Lopez

I suggest you contact Support if no one provides insights on this thread.  

0
Dokie  Mar 28 to Kurro Lopez

2025 and I have the same problem and can't find a solution.😕

0
Enrico Parisi · Mar 29

It the issue of this question/post the "?wsdl" not working or that the SOAP pass-through does not work?

To get "?wsdl" to work you need an HTTP pass-through, technically it's not a SOAP call.
In fact the "?wsdl" parameter is interpreted by IRIS and you get the "wsdl" returned by EnsLib.SOAP.GenericService. 

I created the production and tested the call to the SOAP service (I'm using 2024.1 but I don't thin is relevant) and it works.
I'm using SOAP UI to call the service through the IRIS production and I get the correct result.

Apart from the "?wsdl" call, have you tried calling the actual SOAP service?

For simple cases I found that often using a HTTP pass-through instead of SOAP pass-through makes thing easier.

0