SiKing
6 years agoCommunity Expert
add request header to all calls
I am trying to find a better solution for adding a header to all calls. This questions was already asked here and earlier here. The proposed solution for both of these was to add a RequestFilter.filterRequest event:
def headers = request.requestHeaders headers.put( "X-test", "test" ) request.requestHeaders = headers
This solution has two problems:
- This just keeps adding the same header for each call; meaning if you make the call say three times, you have three of these headers. I tried adding a RequestFilter.afterRequest event with
request.requestHeaders.clear()
, but that did not work. - I have multiple services in my project, and I need to add this header for all requests of only one of my services.
Any advice would be appreciated.
RequestFilter.filterRequest event:
// add header only for "interesting" service if(request.operation.interface.name != "interesting/service") return def headers = request.requestHeaders headers.put("X-Test", "random string") request.requestHeaders = headers
RequestFilter.afterRequest event:
// look for header only for "interesting" service if(request.operation.interface.name != "interesting/service") return def headers = request.requestHeaders if(headers.containsKey("X-Test")) { // request.requestHeaders.clear() does not work here! headers.remove("X-Test") request.requestHeaders = headers }
I am using this to add an "Authorization" header to all my requests. Only the service of interest gets the Auth header, and afterwards it gets cleared out so nothing goes into SCM.
Word of caution: SoapUI (and ReadyAPI) have a long standing bug: If you have many testcases running in parallel, the events could lose track of things and fire all over the place.