cancel
Showing results for 
Search instead for 
Did you mean: 

Dynamic Configuration of SOAP Action

former_member191528
Participant
0 Kudos

Hello Everyone,

I am currently working on a project which requires us to set the SOAP action dynamically:

I did follow the guidelines mentioned in the following links

The process which we are using is as follows

We are creating the following UDF and mapping the root nodes in message mapping using it

DynamicConfigurationKey keyURL = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/SOAP","THeaderSOAPACTION");

// access dynamic configuration

DynamicConfiguration conf = (DynamicConfiguration) container

.getTransformationParameters()

.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);

conf.put(keyURL,"RetrieveList");

return "";

In the Receiver Comm Channel we are setting the use adapter specific identifiers option and the use variable binding option. We are leaving the SOAP Action field blank.

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

  • <!-- Inbound Message

-->

  • <SOAP:Fault xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">

<faultcode>SOAP:Server</faultcode>

<faultstring>String index out of range: 0</faultstring>

<faultactor>Server</faultactor>

</SOAP:Fault>

Now we tested the scenario using TCP Mon and we identified that for the value of SOAP Action we are getting the following results

SOAPAction:

SOAPAction: actual value

It means that 2 SOAP Action are generated one being the empty SOAP Action from Receiver Comm Channel and the other being the one generated using UDF.

Can anyone please update us on if our steps are proper or is there a way to supress the SOAP Action which we left empty in the receiver comm channel.

Your help is truly appreciated.

Thanks.

Kiran

Accepted Solutions (0)

Answers (1)

Answers (1)

bhavesh_kantilal
Active Contributor
0 Kudos

Did you follow all the three steps I have pointed in the thread,

1. In the Receiver SOAP adapter,Select options ,

a) Use Adapter Specific Message Attributes

b) variable Transport Binding.

c) Keep the SOAP action field empty.

In the receiver SOAP adapter, make sure that the soap action is empty and the above options are selected.

In this case, the SOAP action from the UDF will be choosen.

But, if you enter something in the receiver SOAP adapter's SOAP action this will be treated as the SOAP action rather than the UDF code.

Regards

Bhavesh

former_member191528
Participant
0 Kudos

Hello Bhavesh,

Thanks for your quick response. We did configure the Receiver SOAP as per the 3 steps mentioned by you and we have even kept the Receiver SOAP Action blank in our comm. channel we are still getting the error. Do we need to add some information when we select the variable Transport Binding option ?

Thanks.

Kiran

bhavesh_kantilal
Active Contributor
0 Kudos

This is interesting. Can you check if the SOAP Action has some spaces or anything of that sort in the receiver SOAP Adapter?

Maybe there is some blank space is my gut feel . Also which SP are you on? Maybe a bug from SAP?

Regards

Bhavesh

former_member191528
Participant
0 Kudos

Hello Bhavesh,

We are using PI 7.1 SP6 to configure our scenario. I checked, there is no space in the receiver comm. channel. Could you please recommend any other steps which could resolve it.

Thanks.

Kiran

bhavesh_kantilal
Active Contributor
0 Kudos

Kiran

Can you try one of the free webservices on the internet to test this out?

Maybe you can use the Currency Converter webservice in my blog "Webservice Calls from a UDF ".

If XI behaves the same with this Webservice, then its a issue on the PI server and you should raise a OSS with SAP.

Regards

Bhavesh

former_member191528
Participant
0 Kudos

Hello Bhavesh,

I will try running the scenario using the Currency Converter webservice. I will get back to you with the same.

Thanks.

Kiran