I'm trying to add a new web service called documentCombine to our setup on Ubuntu Linux. Its goal is to receive a temp-table of compressed Word documents, uncompress each one, convert it to a PDF, and then combine the entire set into a single PDF, returned via a memptr. All this is easily done with the Ubuntu utilities. We've previously written webservices to take single documents, passed as memptr parameters, and do various types of conversion.
With this new webservice, however, I'm getting this message when calling it: Failure initializing SOAP Call: Cannot match signature for operation 'documentCombine' (11762).
The relevant web service logic looks like this:
define temp-table t-PDFcomponent no-undo
field sortValue as character
field compressedDoc as blob.
define input parameter webServiceID as character no-undo.
define input parameter webServicePassword as character no-undo.
define input parameter table for t-PDFcomponent.
define input parameter encryptionPassword as character no-undo.
define output parameter mFileCombined as memptr no-undo.
Since every other webservice in the .wsdl works fine, I'm assuming that the blob field in the temp-table is the problem. Can anyone confirm this? Any other ideas?
The wsdl can be accessed at https://www.medofficeinfo.com/wsa/wsa1/wsdl
...
<complexType name="documentCombine_tPDFcomponentRow">
<sequence>
<element name="sortValue" nillable="true" type="xsd:string"/>
<element name="compressedDoc" nillable="true" prodata:dataType="prodata:blob" type="xsd:base64Binary"/>
</sequence>
</complexType>
<complexType name="documentCombine_tPDFcomponentParam">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="tPDFcomponentRow" type="S2:documentCombine_tPDFcomponentRow"/>
</sequence>
</complexType>
...
<element name="documentCombine">
<complexType>
<sequence>
<element name="webServiceID" nillable="true" type="xsd:string"/>
<element name="webServicePassword" nillable="true" type="xsd:string"/>
<element name="tPDFcomponent" nillable="true" type="S2:documentCombine_tPDFcomponentParam"/>
<element name="encryptionPassword" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="documentCombineResponse">
<complexType>
<sequence>
<element name="result" nillable="true" type="xsd:string"/>
<element name="mFileCombined" nillable="true" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
...
Calling program sections from client side:
/* for MMU PDF Creator, holds documents to be combined via web service
into a PDF file */
define temp-table t-PDFcomponent no-undo
field sortValue as character
field compressedDoc as blob.
...
define variable mPDF as memptr no-undo. /* combined PDF file */
...
run documentCombine in lv-hWebserviceProgram (
input "xxxx", /* web service ID */
input "xxxx", /* web service password */
input table t-PDFcomponent,
input "xxxx", /* encryption password */
output mPDF) no-error.
Thank you for any help!
Anne Disney
Great Valley Technologies
Sigh, turns out the web service was returning its own response, so had to change the 4GL call to:
/* send to web service */
run documentCombine in lv-hWebserviceProgram (
input "XXXXX", /* Web Service ID */
input "XXXXX", /* password */
input table t-PDFcomponent,
input "XXXXX", /* encryptionPassword */
output webServiceResponse,
output mPDF). /* mFileCombined */
I still don't see how one would know this ...
i realize that wsdl is completely unfit for human consumption but: there are /two/ elements in the response section.