Assign query parameter to request body

Not applicable

Hi,

I want to get the query parameter and want to send it in the request body in post request. But I am getting error with assign message policy.

My Extract variable policy is:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <QueryParam name="date1">
        <Pattern ignoreCase="true">{date2}</Pattern>
    </QueryParam>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>queryinfo</VariablePrefix>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

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>
    <Set>
        <Payload>
            <ExtractQP>{queryinfo.date2}</ExtractQP>
        </Payload>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>

My request is:

http://organisation.apigee.net/analytics/response-code?date1=01/20/2018

My error is:

Error:InvalidRequestContentException: Could not parse request body into json: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
 at [Source: [B@1e2d42a4; line: 1, column: 2]
Solved Solved
0 2 2,902
1 ACCEPTED SOLUTION

Looks like you are sending an XML payload with to the backend with a Content-Type of application/json.

In your assign message you can also set <Header name="Content-Type">application/xml</Header> and if the backend supports xml, this should fix the error. Otherwise you can build JSON instead.

Hope this helps!

View solution in original post

2 REPLIES 2

Looks like you are sending an XML payload with to the backend with a Content-Type of application/json.

In your assign message you can also set <Header name="Content-Type">application/xml</Header> and if the backend supports xml, this should fix the error. Otherwise you can build JSON instead.

Hope this helps!

Yes, I have changed the payload in JSON and it works fine.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="AM-AssigningDate">
    <DisplayName>AM-AssigningDate</DisplayName>
    <Set>
        <Payload contentType="application/json">
            {"start_date":"{queryinfo.date2}"}
        </Payload>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>