IBM webMethods Hybrid Integration

IBM webMethods Hybrid Integration

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only
  • 1.  WSD Consumer for webservice with base64Binary

    Posted Wed October 29, 2014 02:53 PM

    We need to consume a webservice in WM 7.1.3. There is a field of type Base64Binary in one of the operations for sending files . When i create a WSD consumer in webMethods with wsdl, i can see a field with the same type created in the document types of the connectors inputs.

    Now when i try to invoke the consumer by supplying the file data (using the pub.string:base64Decode on a base64 encoded string representation of a file), i get an error saying that the field “fieldName” is absent. I can see the bytes object created in the pipeline when i trace the service, but i keep getting this error on invoking the webservice consumer.


    #webMethods-General
    #webMethods
    #Integration-Server-and-ESB


  • 2.  RE: WSD Consumer for webservice with base64Binary

    Posted Wed October 29, 2014 04:06 PM

    It appears that webMethods is unable to convert the byte object (returned by “pub.String:Base64Decode”) to a String field having base constraint of type [base64Binary {XML Schema}] . Is there a way about this ?


    #webMethods-General
    #webMethods
    #Integration-Server-and-ESB


  • 3.  RE: WSD Consumer for webservice with base64Binary

    Posted Thu October 30, 2014 08:10 AM

    did you try to just use the base64-encoded string in this field?

    Another option might a String2ByteArray-conversion without decoding the base64-encoded string.

    Can you describe this step a bit more in detail?

    Regards,
    Holger


    #webMethods
    #webMethods-General
    #Integration-Server-and-ESB


  • 4.  RE: WSD Consumer for webservice with base64Binary

    Posted Thu October 30, 2014 11:23 AM

    The first step worked (passing thee base64 encoded string directly to the webservice)!

    However, i fail to understand that. This is my understanding: A file can be sent either as bytes or by encoding into a String (base64). My WM service is receiving a file as a string (BAse64 encoded), and then is attempting to pass the same file as bytes to another SOAP webservice. Hence, i used Base64Decode to decode the file String and convert it into an array of bytes which in turn i would pass to the webservice (the corresponding field for byte being Base64Binary. This is what i think should be and should work, but isnt.

    Now what is working is this: My flow service is receiving the encoded String and sending it as is to the webservice which is accepting the file as byte. This, according to me should not work, but is working.

    My best guess is that Apache Axis is decoding the Base64 string before sending the SOAP on the wire.

    PS: The webservice that accepts the file as bytes is implemented in Java and deployed to a JBoss server. The actual input paramater of the operation is a byte but when the service is deployed , the WSDL shows the field as being of type Base64Binary.

    Thanks!


    #webMethods-General
    #Integration-Server-and-ESB
    #webMethods