0
votes

I have an Rest Api that is being exposed on Azure. The Azure Api once called calls a WCF Service in the backend.

Firstly I need to transform the JSON Request to XML. Also, To call the SOAP Service I need to add a Custom Header like this:-

 <s:Header>
      <AuthHeader xmlns="http://abc.security.service">
         <UserID>UserID</UserID>
         <Token>Token</Token>
      </AuthHeader>
   </s:Header>

How do I add an "Inbound Policy" that would transform the request to XML and inject the custom header ?

Any ideas or suggestions would be greatly appreciated !!

1

1 Answers

1
votes

For this requirement, please refer to the policy in my APIM.

<policies>
    <inbound>
        <base />
        <json-to-xml apply="always" />
        <set-body>@{ 
            string inBody = context.Request.Body.As<string>();
            string requestBody = inBody.Replace("<Document>","").Replace("</Document>","");
            string header = "<s:Header><AuthHeader xmlns=\"http://abc.security.service\"><UserID>UserID</UserID><Token>Token</Token></AuthHeader></s:Header>";
            return header + requestBody; 
        }</set-body>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

Please pay attention to the escape character in header, we need to use \" instead of ".