web service: cannot match signature

Posted by adisney on 23-Jan-2013 14:42

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

All Replies

Posted by adisney on 06-Feb-2013 17:07

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

Posted by gus on 07-Feb-2013 09:37


i realize that wsdl is completely unfit for human consumption but: there are /two/ elements in the response section.

This thread is closed