Forum Discussion

dlumpkin's avatar
dlumpkin
New Contributor
9 years ago

Default headers for all resources

Is there any way in ReadAPI 1.5 and SoapUI NG to create a default header that will be used across all resources? We have a standard set of headers (such as X-Requested-By) that need to be included with every request.

 

Right now I am defining these headers on each resource, but it would be helpful if I could define these at a higher level (perhaps on the service, environment, or project?)

  • You can use Events - Before run of a test step.
  • Thanks, I ended up creating a RequestFilter.filterRequest event handler with a script like the following:

     

    def headers = request.requestHeaders
    headers["X-Requested-By"] = ["test"] request.requestHeaders = headers

     

    Update: Be careful to set headers to a new List rather than using the add method because this actually modifies the request definition rather than the outgoing request instance. The add method will keep adding a new copy of the header on every run

  • nmrao's avatar
    nmrao
    Champion Level 3
    You can use Events - Before run of a test step.
    • dlumpkin's avatar
      dlumpkin
      New Contributor

      Thanks, I ended up creating a RequestFilter.filterRequest event handler with a script like the following:

       

      def headers = request.requestHeaders
      headers["X-Requested-By"] = ["test"] request.requestHeaders = headers

       

      Update: Be careful to set headers to a new List rather than using the add method because this actually modifies the request definition rather than the outgoing request instance. The add method will keep adding a new copy of the header on every run

      • Aksel's avatar
        Aksel
        Senior Member

        Hi,

         

        I tried to update in the OnRequest script, the header of the request by using the code below, I have this error :

         

        import com.eviware.soapui.support.types.StringToStringMap
        def headers = mockRequest.requestHeaders//.each {log.info it}
        def header = new StringToStringMap(headers)
        header.remove('SOAPAction')

        log.info header

        mockRequest.requestHeaders = header; // the error comes from this line.

        com.eviware.soapui.impl.wsdl.mock.DispatchException: Failed to dispatch using script; groovy.lang.ReadOnlyPropertyException: Cannot set readonly property: requestHeaders for class: com.eviware.soapui.impl.wsdl.mock.WsdlMockRequest.

        Can you help me?