Server type: Apache tomcat
def requestBody = mockRequest.getRequestContent()
def abc_1= mockRequest.request.getHeader('abc').toString()
Using the above way, i am fetching the header and storing it in a variable.
Worked for me.
JVM Version: 1.8.0_152-b16 (Oracle Corporation)
I created a MockService that returns the "success" response when the header is present (using your code in the dispatch script):
if (mockRequest.request.getHeader("abc") == '123') return "success" else return "fail"
I ran the MockService in SoapUI and ran the request with abc header set to 123, and the response was the "success" result.
I ran "Deploy Project as WAR" and generated headers.war. I opened the Tomcat Manager webapp and deployed headers.war.
I changed my SoapUI request endpoint from localhost:8080/abc (UI mockservice) to localhost:9090/headers/abc (Tomcat deployment),sent the same request, and again got the "success" reply.
Could you please explain how to create headers.war file?I did not create that file because of which i might not be able to get the headers
sorry i misunderstood that i have to generate war file with headers alone.Now i understood that it is the name of the war file.
Actually i had generated war file and deployed it, but when i hit it from soap ui to that particular url it is working fine. However, when the other component of my application tries to hit the mock service url, in my mock service log,I could see the request body content but header value(abc) is showing as null.
Are you sure only it's a problem when you deploy as WAR?
Can you try getting this "other component of your application" to send a request to the SoapUI mockservice (within SoapUI)?
I couldn't hit my mock from other component because of set up issue. Instead i tried from postman and i got only response like "There are currently 1 running SoapUI Mockservices" not my oringinal response.
For instance, if your mock service is on localhost:8080/abc and you request localhost:8080/ then you will get that response.