1 Reply Latest reply on Feb 21, 2013 1:16 PM by zeejayy

    How do i handle a response with SOAP MTOM encoding?

    zeejayy

      I'm trying to build a module to utilize the eBay large merchant services API and I've hit a major road block.

      I decided to start out by implementing a request for active listings. I've got the basic functions working

      to start the export job and get a file ID to download. I can make the download request just fine but the

      filecontent comes back as an object of java.io.ByteArrayOutputStream and I'm not exactly sure what to do with it.

      It's supposed to be XML content with a zip file attached.

       

      The toString result shows that it's Content-Type: application/xop+xml. and it looks like it's delimited by

      a mime boundary. This encoding is a little new to me but I gather it's a more optimized way of packaging the

      binary data with an XML response.

       

      The problem is separating out the binary attachment from the XML part.

       

      I found this Blog Post

       

      where he ended up suggesting using the underlying java getByteArray function but that still doesn't seperate the

      XML from the attachment and after that i don't know what to do with the byte array.

       

      This is running on IIS7 / CF8 fully patched.

        • 1. Re: How do i handle a response with SOAP MTOM encoding?
          zeejayy Level 1

          In case anybody else has this issue i figgured out a way to get it working for a zip file at least. Just gotta take the

          getByteArray result from the returned filecontent and write that out with cffile. This writes out a file with the soap header

          still inside along with the actual binary file contents. So now you have a somewhat correct file with extra junk in the headers.

          Fortunitly i found that winrar will still open this file and let me get the contents out of it just fine.

           

          So there you have it, pretty funky workaround but it will have to do.