How to generate XML response with the starting XML node describing version and encoding?

Not applicable

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 Solved
0 4 2,988
1 ACCEPTED SOLUTION

@Vipul Agarwal ,

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>

2235-screen-shot-2016-03-24-at-35607-pm.png

mockxml-rev1-2016-03-24.zip

View solution in original post

4 REPLIES 4

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>

@Vipul Agarwal ,

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>

2235-screen-shot-2016-03-24-at-35607-pm.png

mockxml-rev1-2016-03-24.zip

@Anil Sagar: Thanks a lot.