Extract Variable : Xpath for Soap request not working on Private Cloud

Not applicable

I created one soap pass through proxy and the default Extract Operation name policy is not working when deployed on our on-premise private cloud. The same proxy is resolving the xpath functions in our public cloud instance.

On Premise private cloud version - 4.17.09.00

Any help appreciated .

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Operation-Name">
    <DisplayName>Extract Operation Name</DisplayName>
    <Properties/>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <Source clearPayload="false">request</Source>
    <XMLPayload stopPayloadProcessing="false">
        <Variable name="envelope" type="String">
            <XPath>local-name(/*)</XPath>
        </Variable>
        <Variable name="body" type="String">
            <XPath>local-name(/*/*[local-name() = 'Body'])</XPath>
        </Variable>
        <Variable name="envelopeNamespace" type="String">
            <XPath>namespace-uri(/*)</XPath>
        </Variable>
        <Variable name="operation" type="String">
            <XPath>local-name(//*[local-name() = 'Body']/*[1])</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>
Solved Solved
1 6 823
1 ACCEPTED SOLUTION

ok thanks.

From the screenshots, here is what I see. In the request you are sending to the API Proxy running on Edge SaaS :

  • you are using POST.
  • SOAP is being sent into the Apigee Edge API Proxy
  • You are running the ExtractVariables on the SOAP provided
  • the ExtractVariables is working as expected.

In the request sent to the API Proxy for othe customer-managed (aka on-prem) Edge install

  • You are using GET
  • No payload is sent (because it's a GET request)
  • The ExtractVariables is doing nothing. This is expected, correct behavior, because the payload is empty!

Somehow there is a difference between the request you are making to the Edge SaaS and the request you are sending to the customer-managed installation of Edge.

Resolve that difference, and I bet you'll solve your mystery!

View solution in original post

6 REPLIES 6

@TomfransDavis ,

Can you post sample payload to reproduce above issue ?

@Anil Sagar I am trying with sample soap project

http://webservices.flightexplorer.com/FastTrack.asmx?WSDL

This service is working as expected in Public cloud - Org- emaratech ; but not working on our on-premise installation.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservices.flightexplorer.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:GetFlightData>
         <!--Optional:-->
         <web:Userid>?</web:Userid>
          <!--Optional:-->
         <web:Password>?</web:Password>
         <!--Optional:-->
         <web:ACID>?</web:ACID>
      </web:GetFlightData>
   </soapenv:Body>
</soapenv:Envelope>

You mentioned "on-premises". Are you certain that your on-prem install of Apigee Edge is able to connect directly with the flightexplorer.com APIs ? Can you show the trace of the API request in which the ExtractVariables "fails"?

I suspect that the EV is not failing, but instead, the SOAP response is not available. If there is a lack of connectivity from the MP to the SOAP endpoint, this is what you would see.

@Dino @Anil Sagar Please find the trace details of both cloud environments. You can see the variables are not resolved in private cloud api trace even before hitting the backend soap endpoint.

6076-on-premise.jpg

6077-public-cloud.jpg

ok thanks.

From the screenshots, here is what I see. In the request you are sending to the API Proxy running on Edge SaaS :

  • you are using POST.
  • SOAP is being sent into the Apigee Edge API Proxy
  • You are running the ExtractVariables on the SOAP provided
  • the ExtractVariables is working as expected.

In the request sent to the API Proxy for othe customer-managed (aka on-prem) Edge install

  • You are using GET
  • No payload is sent (because it's a GET request)
  • The ExtractVariables is doing nothing. This is expected, correct behavior, because the payload is empty!

Somehow there is a difference between the request you are making to the Edge SaaS and the request you are sending to the customer-managed installation of Edge.

Resolve that difference, and I bet you'll solve your mystery!

@Dino thank you. Issue was with the http method while posting from Soap UI