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
Expand all | Collapse all

Sending pdf as multipart/form-data via pub.client.http method

  • 1.  Sending pdf as multipart/form-data via pub.client.http method

    Posted Thu October 21, 2021 04:12 AM

    I am using 10.3 and want to send a pdf file to a REST APİ via using pub.client.http method.

    So anyone could help here ? I couldn’t find the way to add pdf file to a form_data body type.

    Thanks in advance.


    #webMethods


  • 2.  RE: Sending pdf as multipart/form-data via pub.client.http method

    Posted Thu October 21, 2021 01:23 PM

    What does the “REST API” expose to support doing this?


    #webMethods


  • 3.  RE: Sending pdf as multipart/form-data via pub.client.http method

    Posted Fri October 22, 2021 03:00 AM

    Hi Mehmet,

    I saw related post regarding to your problem,

    Hopefully it helps, else we continue discuss in this post.

    Thanks


    #webMethods


  • 4.  RE: Sending pdf as multipart/form-data via pub.client.http method

    Posted Fri October 22, 2021 03:27 AM

    Hi I also check that post and it couldn’t help my solution because he only describe how to send json format. I could not achieve to send pdf. I am getting 415 unsupported media type error from the server . Here is what I try ;

    image


    On server side, Developer told me that it needs to be multipart/form-data as content type, but I send application/pdf, but when I try to send multipart/form-data on http header content-type it gets 400 error directly.

    And when I try to change contenttype on addbodypart method it gives an error like
    “MIME part of type “multipart/form-data” contains object of type java.io.ByteArrayInputStream instead of MimeMultipart”

    So I am glad to hear some help :slight_smile:


    #webMethods


  • 5.  RE: Sending pdf as multipart/form-data via pub.client.http method

    Posted Fri October 22, 2021 03:59 AM

    Now I changed the contentType in http header as multipart/form-data; boundary=--------------------------TEST
    It gets
    “{”$id":“1”,“message”:“Unexpected end of MIME multipart stream. MIME multipart message is not complete.”,“type”:“System.IO.IOException”,“date”:“2021-10-22T07:57:56.706142Z”}"


    #webMethods


  • 6.  RE: Sending pdf as multipart/form-data via pub.client.http method

    Posted Fri October 22, 2021 10:40 AM

    You’re on the right track. You create the multipart/form-data with the steps in your screen shot.

    createMimeData -- set subType = form-data
    You likely do not need to call addMimeHeader -- what are the inputs being set?
    addBodyPart -- for the file; set these:
    content - the stream of the file content
    isEnvStream - no
    mimeHeader -
    Content-Disposition = form-data; name="upload" filename="%/yourVarWithFilenameNoPath%"
    contenttype - application/octet-stream; name="%/yourVarWithFilenameNoPath%" -- might specify application/pdf instead
    encoding - binary
    getEnvelopeStream -- set createMultipart = yes
    
    http -- Nothing special needed here, just map the envStream to data/mimeStream; you could set Transfer-Encoding to chunked for efficiency
    

    I see that the file is being read via FTP and is being loaded completely into memory. Are you sure you want to do that? You might consider a bit more modularity by:

    • Split the FTP steps to another service. Retrieve the file via FTP and store locally, temporarily.
    • Split the MIME stream creation to another service. Load the local file as a stream, not as bytes – don’t load the entire thing into memory. Pass that stream as the content to the addBodyPart call.

    Splitting things up helps greatly with testing the individual major steps.

    HTH.


    #webMethods