How to send a multipart form-data request in webMethods using pub.mime?

Product: webMethods . io Integration version: 10.16.1.0

Question: How to send a multipart form-data request in webMethods HTTP Request (pub.client:http).

For instance, in Python this can be done like this

import requests
url = 'https://app.test.com/test/api/v1/webhook/12345
headers = {
    'Authorization': 'Bearer 12345'
}
files = {
    'file': ('TEST.csv', open(r'C:\Users\ME\Desktop\TEST.csv', 'rb')),
    'FileName': 'TEST'
}
response = requests.post(url, headers=headers, files=files)

In Postman it can be done by selecting “form-data” as the payload type and entering the key “file” with a value of the uploaded CSV file and another key “FileName” with a value of the name of the file.

I have followed the other answers (i.e. How to send a mimestream using pub.client:http - #6 by Martin_Gawantka) but they do not specify how to attach the “file” and “FileName” expected keys with respective values. Same issues on webMethods.io cloud and webMethods on-prem. I understand we must use pub.mime to complete this but I would like to know more about adding the headers.

1 Like

Hi @GMook ,
I have created the sample to handle the mime data on webmethods.io Integration.
Created the flow service how you can submit the mime data using Http request.
For testing purpose I am using azure storage to get the stream data and.

Attaching the sample for same.
SubmitCSVMimeData.zip (10.7 KB)

Let me know if this helps.

Regards
Vikash Sharma

Thanks for the reply,

Unfortunately, the sample Service provided titled SubmitCSVMimeData used a “Content-Type” header of “multipart/form-data”. However, the way we built out the integration in the call it does not accept that giving a error message of

MIME part of type “multipart/form-data” contains object of type java.io.ByteArrayInputStream instead of MimeMultipart

When trying to use Content-Type of text/csv the endpoint gives a status code of 415 for Unsupported Media Type. The Content-Type of application/json gives status code of 400 for Bad Request.

For the “Content-Disposition ” header I was told to do form-data; name=“file”; filename=“CSVDataSample.csv”. However, I do not exactly see how that matches the required key-value headers of the key “file” having a value of the actual file contents and then the key “FileName” having the name of the file itself.

The documentation from SoftwareAG on MIME messages does not cover this use case provided by the Postman Proof Of Concept attached above in the original message.

Look forward for more information to hopefully get this resolved asap.

Thank you,
Garret

hi @GMook ,
Can you please share the service you are trying .
We can look into it.

Regards
Vikash Sharma

hi @GMook,
We resolved the issue by using the workflow.

Regards
Vikash Sharma