Forum Discussion
Hi,
Thank you for your post. I cannot reproduce the issue when there is an empty line between headers, or the filename parameter is on a separate line (I used ReadyAPI 2.6.0).
The needed headers should be added if you add a file on the Attachments tab of the Request.
To further troubleshoot the issue, I will need to see the content of the TestCase properties and the screenshot of the Attachments tab.
Also, I can recommend that you open a new case here: https://support.smartbear.com/message/?prod=ReadyAPI
Hi Nastya, Thank you for the effort and reply.
I didn't attach file to attachment tab due to default binary encoding. Request is designed to send base64 encoded file. Is there any way to change the default file encoding inside ReadyAPI?
Now for the empty line between those multipart headers -
I am creating json part on the fly via groovy script in order to update json nodes with different data such as currentdate, new relationship no, contact etc... As part of this process I am hardcoding second header line as I am not sure how to include it automatically with form-data.
//## build json body and write to a file for reference ##// def REQUEST = new JsonBuilder(metaDataVal).toString() REQUEST = "Content-Type: application/json; charset=utf-8\r\n\r\n" + "$REQUEST" testRunner.testCase.setPropertyValue("docMetaData", REQUEST)
For the file part - I am encoding the file and hard coding other headers too (attached a file to show the file content).
Multipart/form-data puts only Content-Disposition: header.
//## READ canned request from a file to modify ##// def testFile = new File(RequestPath + "testFile.txt").text //## base64 encoded format is stored in this file ##// testRunner.testCase.setPropertyValue("testFile", "$testFile")
- Nastya_Khovrina6 years agoSmartBear Alumni (Retired)
Hi,
Ok, thank you for the information. I can recommend that you check the following articles:
- How to send binary data in the request payload?
- Troubleshooting issues with adding attachments to REST requests
- New2API6 years agoFrequent Contributor
Hey Nastya, awesome!!!
Second link helped me to inject or correct the headers in multi-part body of a request.
Thanks a ton!
I have not used attachment tab to attach a file.
Instead, I encoded a file using groovy. Groovy script does the following.
- Reads a canned json from a file and updates json nodes with right attributes
- Saves updated json to a testcase property
- Reads a pdf file and encodes in base64 format
- Saves encoded file to a testcase property
In Rest Step, I am calling above testcase properties as query parameters. Also, selected media type as "Multipart/form-data' and checked "Post QueryString" option.
In order to inject required headers I used below event handler script. (RequestFilter.filterRequest)
import org.apache.http.client.methods.HttpRequestBase import com.eviware.soapui.impl.wsdl.submit.transports.http.BaseHttpRequestTransport def bodyPart = context.getProperty("httpMethod").requestEntity.message.content.getBodyPart(0) //## get a part by number, it starts with 0 //## Add headers to json section of body bodyPart.addHeader("Content-Type", "application/json; charset=utf-8") //## specify the value without the name parameter def bodyPart1 = context.getProperty("httpMethod").requestEntity.message.content.getBodyPart(1) // get a part by number, it starts with 0 bodyPart1.removeHeader("Content-Disposition") //## delete default headder added by SoapUI //## Add headers to PDF section of body bodyPart1.addHeader("Content-Disposition", "form-data; name="+"document0"+"; filename="+"TesTDoc.pdf") bodyPart1.addHeader("Content-Type", "application/pdf") bodyPart1.addHeader("Content-Transfer-Encoding", "base64")
- Nastya_Khovrina6 years agoSmartBear Alumni (Retired)
You're welcome! I'm glad to hear that the article helped you.
And, thank you for sharing your script with us!
Related Content
- 3 years ago
- 11 years ago
Recent Discussions
- 3 days ago