invoking a SOAP Call, that expects an ArrayOfNameValuePair

hello,

I want to call a webservice from mediator.
i have done this from C# and it works (see E3SoapClient.cs)
the service runns on a machine on my local network, so i made no proxy settings at the JVM Options.

The WSDL is:
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:http=“http://schemas.xmlsoap.org/wsdl/http/” xmlns:soap=“http://schemas.xmlsoap.org/wsdl/soap/” xmlns:s=“XML Schema” xmlns:soapenc=“http://schemas.xmlsoap.org/soap/encoding/” xmlns:tns=“urn:E3UnreferencedAttachmentService” xmlns:tm=“http://microsoft.com/wsdl/mime/textMatching/” xmlns:mime=“http://schemas.xmlsoap.org/wsdl/mime/” targetNamespace=“urn:E3UnreferencedAttachmentService” xmlns:wsdl=“http://schemas.xmlsoap.org/wsdl/”>
wsdl:types
<s:schema xmlns=“XML Schema” targetNamespace=“urn:E3UnreferencedAttachmentService”>
<s:import namespace=“http://schemas.xmlsoap.org/soap/encoding/” />
<s:complexType name=“NameValuePair”>
<s:sequence>
<s:element name=“name” nillable=“true” type=“s:string” />
<s:element name=“value” nillable=“true” type=“s:string” />
</s:sequence>
</s:complexType>
<s:complexType name=“ArrayOfNameValuePair”>
<s:complexContent mixed=“false”>
<s:restriction base=“soapenc:Array”>
<s:attribute wsdl:arrayType=“tns:NameValuePair” ref=“soapenc:arrayType” />
</s:restriction>
</s:complexContent>
</s:complexType>
</s:schema>
</wsdl:types>
<wsdl:message name=“callE3EncodedRequest”>
<wsdl:part name=“parameters” type=“s:string” />
<wsdl:part name=“headers” type=“s:string” />
</wsdl:message>
<wsdl:message name=“callE3Request”>
<wsdl:part name=“parameters” type=“tns:ArrayOfNameValuePair” />
<wsdl:part name=“headers” type=“tns:ArrayOfNameValuePair” />
</wsdl:message>
<wsdl:message name=“callE3EncodedResponse”>
<wsdl:part name=“headers” type=“s:string” />
</wsdl:message>
<wsdl:message name=“callE3Response”>
<wsdl:part name=“headers” type=“tns:ArrayOfNameValuePair” />
</wsdl:message>
<wsdl:portType name=“E3UnreferencedAttachment”>
<wsdl:operation name=“callE3” parameterOrder=“parameters headers”>
<wsdl:input name=“callE3Request” message=“tns:callE3Request” />
<wsdl:output name=“callE3Response” message=“tns:callE3Response” />
</wsdl:operation>
<wsdl:operation name=“callE3Encoded” parameterOrder=“parameters headers”>
<wsdl:input name=“callE3EncodedRequest” message=“tns:callE3EncodedRequest” />
<wsdl:output name=“callE3EncodedResponse” message=“tns:callE3EncodedResponse” />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name=“E3UnreferencedAttachmentSoapBinding” type=“tns:E3UnreferencedAttachment”>
<soap:binding transport=“http://schemas.xmlsoap.org/soap/http” style=“rpc” />
<wsdl:operation name=“callE3”>
<soap:operation soapAction="" />
<wsdl:input name=“callE3Request”>
<soap:body use=“encoded” namespace=“urn:E3UnreferencedAttachmentService” encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/” />
</wsdl:input>
<wsdl:output name=“callE3Response”>
<soap:body use=“encoded” namespace=“urn:E3UnreferencedAttachmentService” encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/” />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name=“callE3Encoded”>
<soap:operation soapAction="" />
<wsdl:input name=“callE3EncodedRequest”>
<soap:body use=“encoded” namespace=“urn:E3UnreferencedAttachmentService” encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/” />
</wsdl:input>
<wsdl:output name=“callE3EncodedResponse”>
<soap:body use=“encoded” namespace=“urn:E3UnreferencedAttachmentService” encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/” />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name=“E3UnreferencedAttachmentService”>
<wsdl:port name=“E3UnreferencedAttachment” binding=“tns:E3UnreferencedAttachmentSoapBinding”>
<soap:address location=“http://e3server:8080/e3/services/E3UnreferencedAttachment” />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

My sequence is:
<?xml version="1.0" encoding="UTF-8"?>











The <params.xml> file looks like:
<?xml version="1.0" encoding="windows-1252" ?>


content of the message is:
----- Content -----
<?xml version='1.0' encoding='UTF-8'?>
----->

When i execute the sequence, i get the following error:
[slf5s.start]23 Feb 2005 17:34:55,706[slf5s.DATE] Thread-4[slf5s.THREAD] ERROR[slf5s.PRIORITY] xbd[slf5s.CATEGORY] - SagSequencer - SEQUENCER ERROR: sequence “http://localhost:8080/slide/files/MediatorRepository/FlightCockpitReport/ArbortextAccessor.xml”, line 7, : com.softwareag.xbridge.exceptions.XException: XPath evaluation error[slf5s.MESSAGE]
com.softwareag.xbridge.exceptions.XException: XPath evaluation error
at com.softwareag.xbridge.sequencer.ArgResolver$XPathExprEvaluator.getValue(DashOB6501:643)
at com.softwareag.xbridge.sequencer.ArgResolver.getArgValue(DashOB6501:208)
at com.softwareag.xbridge.sequencer.SequenceState.getArgValue(DashOB6501:947)
at com.softwareag.xbridge.sequencer.KeywordSTEP.execute(DashOB6501:72)
at com.softwareag.xbridge.sequencer.SequencerImpl.execute(DashOB6501:607)
at com.softwareag.xbridge.sequencer.SequencerImpl.dispatch(DashOB6501:303)
at com.softwareag.xbridge.infrastructure.ac.perform(DashOB6501:252)
at com.softwareag.xbridge.util.WorkerThread.run(DashOB6501:450)


i think, the problem is the way, i pass the parameters. the requironment of the webservice is to pass tehe parameters as “NameValuePair”, but some parameters are not “NameValue”.

how can i pass the parameter “-p f=convert -p type=html -p file=$aptpath/e3/e3/e3demo.xml -o ConvertedServerFile.html” to mediator ?

thx
-hannes
E3SoapClient.cs (9.72 KB)

this is the way, it look like, when i’m calling the Weservice from visual Studio:
params.jpg

Hi Hannes,

The problem being reported is not related to the long parameter string. The error is an invalid XPath expression, e.g. xbd.soap.arg1.headers="{Empty String}". Expressions inside single curly braces are interpreted as XPath expressions by the sequencer engine, and this is clearly not valid.

Hope this helps.

Best regards,
Mike

hhi!

i changed this, so that my sequence now is:




the document from which the parameters are taken is:
<?xml version="1.0" encoding="windows-1252" ?>






i am still getting this exception logged:

[slf5s.start]24 Feb 2005 17:20:43,894[slf5s.DATE] Thread-4[slf5s.THREAD] ERROR[slf5s.PRIORITY] xbd[slf5s.CATEGORY] - SagSequencer - SEQUENCER ERROR: sequence “http://localhost:8080/slide/files/MediatorRepository/FlightCockpitReport/ArbortextAccessor.xml”, line 7, : com.softwareag.xbridge.exceptions.XException: embedded exception: null[slf5s.MESSAGE]
com.softwareag.xbridge.exceptions.XException: embedded exception: null
at com.softwareag.xbridge.soapgateway.SoapGatewayImpl.addRawParameter(DashOB6501:1126)
at com.softwareag.xbridge.soapgateway.SoapGatewayImpl.prepareRPCCall(DashOB6501:956)
at com.softwareag.xbridge.soapgateway.SoapGatewayImpl.modify(DashOB6501:701)
at com.softwareag.xbridge.infrastructure.y.modify(DashOB6501:56)
at com.softwareag.xbridge.sequencer.KeywordSTEP.execute(DashOB6501:151)
at com.softwareag.xbridge.sequencer.SequencerImpl.execute(DashOB6501:607)
at com.softwareag.xbridge.sequencer.SequencerImpl.dispatch(DashOB6501:303)
at com.softwareag.xbridge.infrastructure.ac.perform(DashOB6501:252)
at com.softwareag.xbridge.util.WorkerThread.run(DashOB6501:450)

fg
-hannes