Invoking consumed web service with attachment

0
Hello All, I am trying to invoke a consumed web service (from third party) through mendix. The service requires attachments for its further processing at the third party end. I have used System.FileDocument entity (having variables: File [Binary], AttachementFlag [Boolean]) to store the files and used FileManager widget for file upload (with supported extension: pdf). In the web service, the XSD for attachment element is defined as: <xs:element type="xs:base64Binary" name="attachments" minOccurs="0" xmime:expectedContentTypes="application/pdf" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/>   While invoking service through a microflow, I am receiving an error which says: com.mendix.core.CoreException: com.mendix.modules.microflowengine.MicroflowException: Calling a webservice with a null parameter is not allowed (http://navydemo.example.com:executeCreateFlightRecoveryInBoat_withLake|http://navydemo.example.com:FlightRecovery|attachments = null) at MyFirstModule.SaveLogAndCreatePR_5 (CallWebservice : 'Call web service 'executeCreateFlightRecoveryInBoat_withLake'')   Due to this error, mendix is not able to create an outgoing XML, required for invoking the service. I checked the corresponding table (containing files) in internal HSQL database, I do not see any binary data against the 'File' column. However, when I tried to download the browser using ID through URL: hostname:port/file?guid="XYZ", the file got downloaded. Am I missing something on this? Also, I have looked around for a way to specify null to an input element of the WS, but I am not able to find any fix for the same. Please let me know if Mendix has rolled out a fix in a newer version or any work around. Thanks
asked
1 answers
1

I am not 100% sure If my answer solves your problem, but in this xsd snippet I can see something with base64. Did you try to create a base64 String out of your file and use it as attribute value for this element?

In the community commons module you can find java actions to decode/encode files to base64 string or the other way around.

answered