cancel
Showing results for 
Search instead for 
Did you mean: 

Executing different SOAP request's based on input field value

arunnp
New Contributor II

Hello,

I have to design a pipe line which is based on SOAP request. I have the wsdl. This is my first SOAP pipeline I have few queries.
The SOAP Execute snap has three fields

  1. Service Name 2) Endpoint . 3) Operation. What values I have to give here, I checked the document but its not clear to me.

The wsdl file I have has ‘ExecuteApplication’ endpoint or method. I need to execute this with request payload when the input filed $Action equal to “directory”.

I designed a pipe line like this
image

Here Json parser takes the input and Mapper will prepare the payload for SOAP executor. But this pipeline throwing error.
“message”: “HTTP Code: 400 Status: POST to pipeline that does not have an unlinked input view Errors: None”

Pls suggest how to execute this SOAP request .
thanks
arun

10 REPLIES 10

SpiroTaleski
Valued Contributor

@arunnp

To achieve that, you will need two pipelines(parent/child):

1.The parent pipeline will receive the message(exposed as an API), prepare the SOAP request, and will call the child pipeline, sending the $Action as a pipeline parameter to the child pipeline.

2.The child pipeline will have the SOAP Snap inside and will receive the message from the parent pipeline. Based on the pipeline parameter($Action) sent from the parent pipeline, will decide what method to execute.

In the SOAP Snap fields you can write expressions and access pipeline parameters.

image

Or do you want to execute the SOAP request only if the $Action = “directory”(if the action is different than “directory” skip the calling of the SOAP request)?

Regards,
Spiro Taleski

arunnp
New Contributor II

Thanks @Spiro_Taleski for the reply.

I am planning to design the pipeline like this

JSON Parser → Router (it will check the $Action filed value) → Route to specific SOAP Execution → SOAP Response

Ex: Request → $Action is “directory” → Route to → Mapper (to prepare the SOAP Req)-> SOAP Execute snap1
Request → $Action is “file” → Route to → Mapper (to prepare the SOAP Req) → SOAP Execute snap2

The SOAP Execute snap has three fields My question is
Service Name 2) Endpoint . 3) Operation. What values I have to give here. I have “wsdl” set.

The wsdl file I have has ‘ExecuteApplication’ endpoint or method. I need to execute this with request payload when the input filed $Action equal to “directory”.

Here Json parser takes the input and Mapper will prepare the payload for SOAP executor. But this pipeline throwing error.
“message”: “HTTP Code: 400 Status: POST to pipeline that does not have an unlinked input view Errors: None”
I hope I clarified my requirement.
thanks
arun

SpiroTaleski
Valued Contributor

@arunnp

Ok. You can route based on the incoming action field(using Router Snap).

image

So, you will have separate branches for each action.
In the SOAP Execute Snap, once you have the WSDL defined, then by clicking on the fields(screen below), the Snap will load ServiceName/Endpoints/Operation etc, based on the WSDL file.

image

Regarding the error message, please ensure that the pipeline has unlinked input view, or this error can happen if you have an errors in other Snaps(like Mapper or SOAP Execute).

Regards,
Spiro Taleski

arunnp
New Contributor II

@Spiro_Taleski
Thanks for the reply. Now I am able to execute the SOAP request. But now not able to extract the particular field in the response.

[
{
“s:Body”: {
@xmlns:s”: “http://schemas.xmlsoap.org/soap/envelope/”,
“ExecuteApplicationResponse”: {
@xmlns”: “http://apd.etst.com/”,
“ExecuteApplicationResult”:“{"Return":true,"Hint":"Success","Directories":[{"DirectoryID":"Windows","DirectoryName":"Demo }]}”
}
},
“original”: {
“language”: "en-US
}
}
]

Here I need to extract the “ExecuteApplicationResult”. I tried Mapper but not working.
I need to set the “ExecuteApplicationResult” to a “result” object. Can you pls suggest.
image