Hi All,
I want to mock the error response of a target server, where the response is like:
<?xml version="1.0" encoding="UTF-8"?> <Error> <ErrorCode>2021</ErrorCode> <ErrorMessage>Partner with given apikey not authorized to use this operation.</ErrorMessage> </Error>
I am able to generate the error message except the first line of the message i.e.
<?xml version="1.0" encoding="UTF-8"?>
I am not sure how to do that..Please suggest.
Solved! Go to Solution.
Seems like Assign Message policy doesn't support raw xml with xml initial tag, but you always have power of Javascript policies. See example below i.e working & proxy attached.
var errorResponseXml = '<?xml version="1.0" encoding="UTF-8"?><Error><ErrorCode>2021</ErrorCode><ErrorMessage>Partner with given apikey not authorized to use this operation.</ErrorMessage></Error>'; context.setVariable("errorResponseXml", errorResponseXml);
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers> <Header name="Content-Type">text/xml; charset=utf-8</Header> </Headers> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Payload contentType="text/xml">{errorResponseXml}</Payload> <Path/> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
Are you using Assign Message policy to set response to above XML ?
@Anil Sagar: Yes. I am using assign message policy for setting custom error response.
Please suggest the best way to achieve it.
My Assign Message policy is ::
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers> <Header name="Content-Type">text/xml; charset=utf-8</Header> </Headers> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Payload contentType="test/xml"> <Error> <ErrorCode>2021</ErrorCode> <ErrorMessage>Partner with given apikey not authorized to use this operation.</ErrorMessage> </Error> </Payload> <Path/> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
Seems like Assign Message policy doesn't support raw xml with xml initial tag, but you always have power of Javascript policies. See example below i.e working & proxy attached.
var errorResponseXml = '<?xml version="1.0" encoding="UTF-8"?><Error><ErrorCode>2021</ErrorCode><ErrorMessage>Partner with given apikey not authorized to use this operation.</ErrorMessage></Error>'; context.setVariable("errorResponseXml", errorResponseXml);
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers> <Header name="Content-Type">text/xml; charset=utf-8</Header> </Headers> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Payload contentType="text/xml">{errorResponseXml}</Payload> <Path/> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
@Anil Sagar: Thanks a lot.