Ask a Question

Replace request content using RequestFilter.filterRequest does not work

RiteshY
Occasional Contributor

Replace request content using RequestFilter.filterRequest does not work

I want to send urlencoded request, to achive that I am using following code in RequestFilter.filterRequest

 

def requestHeaders = request.getRequestHeaders()
def contentType = requestHeaders.get("Content-Type")[0].trim().toLowerCase()
def reqContent = context.requestContent

if (contentType=="application/x-www-form-urlencoded" && reqContent){
	reqContent = java.net.URLEncoder.encode(reqContent.replaceAll('\t', '    ').replaceAll('\r\n|\n', ''), 
														    java.nio.charset.StandardCharsets.UTF_8.toString())
	context.requestContent = "=$reqContent".toString()
}

 

But It doesn't send URLEncoded request. According to http://blog.smartbear.com/soapui/soapui-pro-holiday-goodies-event-handlers-and-jdbc-connections/ article, it should work. Am I missing something?

 

Capture.PNG

 

I don't want to use SubmitListener.beforeSubmit event with request.setRequestContent as It changes request content in the test and next time it becomes unreadable for anyone.

Any Suggestion folks?

 

Thanks,

Ritesh

9 REPLIES 9
nmrao
Champion Level 3

Have you tried with below statment?
'context.requestContent = reqContent'


Regards,
Rao.
RiteshY
Occasional Contributor

If I try to get request content in SubmitListener.beforeSubmit using context.requestContent. It returns blank.

I tried setting context.requestContent in SubmitListener.beforeSubmit but it does't work either.

 

context.requestContent = reqContent also doesn't work in RequestFilter.filterRequest

 

-Ritesh

nmrao
Champion Level 3

Can you log and see what is there in reqContent variable? Have it after the url encode statement.


Regards,
Rao.
RiteshY
Occasional Contributor

 log.info reqContent prints encoded request.

nmrao
Champion Level 3

Then it should be able to set the request using:
context.requestContent = reqContent

You need to check the raw request, not in the request editor if the change has happened or not, just in case it was not check in this way earlier.


Regards,
Rao.
RiteshY
Occasional Contributor

I am checking RAW request not the request section. Please see following screencast

RequestFilter.gif

nmrao
Champion Level 3

could not see raw request from the attachment.
I could not see the suggested statement in the script.


Regards,
Rao.
RiteshY
Occasional Contributor

It's a GIF file. You should be able to see raw request in the animation. (May be download the file and see it. Somehow, It's super slow in forum window)
Also, I am using following line to set the content which is not very different that you are suggesting.

 

context.requestContent = "=$reqContent".toString()

I tried with what you are suggesting and result is same.

 

-Ritesh

jahmai
Occasional Visitor

Hi Ritesh,

 

Did you ever resolve this? No matter what I set context.requestContent to inside the RequestFilter.filterRequest event, it always sends the original value.

 

Jahmai

cancel
Showing results for 
Search instead for 
Did you mean: