Problems using multipart/form-data in manual mode


#1

Hello,

I am creating a POST request in manual mode and trying to attachment the file the I need in the multipart/form-data option but always I get the same error:

Could you help me please?


#2

Hello,

one of your parameters (ProcessId) is null and your server is not able to handle it, that’s why it returns 500 and throws an exception.


#3

Thanks for your answer Marek, even with parameter not null is getting the same error


#4

Where do you store your file? Is the specified path correct?


#5

I am saving it in the next path, but in the Katalon explorer I dont see it and it is there look:

image


#6

I need to pass parameterized values in the HTTP Body -> Form-data section How can I achieve that in Katalon?


#7

Hi @ajaramillog , @Sudharsan

We’re also having issues with Katalon’s REST builder for multipart form data upload, the workaround we found for this is using cURL via ProcessBuilder

ProcessBuilder pb = new ProcessBuilder(“curl”, “-X”, “POST”,
““https://samplesite/index.php?/api/v2/add_attachment_to_result/3996=””,
“-H”, ““Authorization: Basic tHiSiSaToKeN””
, “-H”, ““Content-Type: multipart/form-data””, “-H”, ““cache-control: no-cache””,
“-F”, ““attachment=@C:\test-image.jpg””)
pb.redirectErrorStream(true)
Process p2 = pb.start();


#8

Hi @mbillenberger,
Can you share your script? That will help us better investigate the issue.
Regards.


#9

Hi @huynguyen

We’ve encountered this issue while trying to add TestRail’s attachment upload REST endpoint

Request for multipart/form-data:

RequestObject ro = new RequestObject(‘a’)
ro.setRestRequestMethod(‘POST’)
ro.setRestUrl(‘https://sampletestrailinstance/index.php?/api/v2/add_attachment_to_result/1378’)
def httpheader = new ArrayList()
httpheader.add(new TestObjectProperty(‘Content-Type’, ConditionType.EQUALS, ‘multipart/form-data’))
httpheader.add(new TestObjectProperty(‘Authorization’, ConditionType.EQUALS, auth))
ro.setHttpHeaderProperties(httpheader)
def formdataparam = new FormDataBodyParameter(‘attachment’, ‘C:\test-image.jpg’, ‘File’)
ro.setBodyContent(new HttpFormDataBodyContent([formdataparam]))
def response = WS.sendRequest(ro)
println(response.getResponseText())

Response for multipart/form-data:

Note: This is the response from TestRail when submitting a blank body

Which may mean that the image is not attached to the FormDataBodyParameter, I can’t really tell for sure because the RequestObject doesn’t return the request used when it’s executed.

If I use this same code, but Content-Type: application/json, it works, which means my header is not the issue.

Request for application/json

RequestObject ro = new RequestObject(‘a’)
ro.setRestRequestMethod(‘GET’)
ro.setRestUrl(‘https://sampletestrailinstance/index.php?/api/v2/get_tests/55’)
def httpheader = new ArrayList()
httpheader.add(new TestObjectProperty(‘Content-Type’, ConditionType.EQUALS, ‘application/json’))
httpheader.add(new TestObjectProperty(‘Authorization’, ConditionType.EQUALS, auth))
ro.setHttpHeaderProperties(httpheader)
ro.setBodyContent(new HttpTextBodyContent(’’, ‘UTF-8’, ‘application/json’))
def response = WS.sendRequest(ro)
println(response.getResponseText())

Response for application/json:


#10

Did this start working for you?
I am doing the same thing and for same purpose (Test Rail result updating with screenshot)