New to web service development

Hi Folks,

I am a not new to webMethods, have spent many years architecting interesting application deployments. But this is my first time diving into flow and web services via webMethods.

I am not sure if I am missing something, due to my lack of experience or if there is an issue or missing step(s).

The goal here is to have webMethods ‘in the middle’ of two systems exchanging web services. As I understand it, this should not be too big a deal.

I have imported a wsdl into the IS. I have created a stub flow to validate the imported wsdl connector can be referenced and generated the web service descriptor to get the ‘webMethods wsdl’… I copied the expected inputs to the original wsdl into the inputs of my stub flow.

All seems to be fine.

I provided the webMethods wsdl to the original developer (who provided me the original application wsdl) just to confirm things were acceptable. They were not.

Here is the original wsdl:
<soap:Envelope xmlns:soap=“http://www.w3.org/2003/05/soap-envelope” xmlns:com=“http://apphost.domain/pub/common” xmlns:inc=“http://apphost.domain/pub/incident”>
soap:Header
com:Authentication
com:UserID?</com:UserID>
com:Password?</com:Password>
</com:Authentication>
</soap:Header>
soap:Body
inc:GetIncidentDetail
inc:incidentId?</inc:incidentId>
</inc:GetIncidentDetail>
</soap:Body>
</soap:Envelope>

Here is the webMethods wsdl:
<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:get=“http://webMethodshost.domain/flow_test/incident/GetIncidentDetail_WSD” xmlns:inc=“http://apphost.domain/pub/incident” xmlns:com=“http://apphost.domain/pub/common”>
soapenv:Header/
soapenv:Body
get:GetIncidentDetail
inc:incidentId?</inc:incidentId>

com:Authentication
com:UserID?</com:UserID>
com:Password?</com:Password>
</com:Authentication>
</get:GetIncidentDetail>
</soapenv:Body>
</soapenv:Envelope>

Now, I thought all looked well and via webMethods mapping will be able to get things working just fine.

The app developer has highlighted that the other application host is expecting things is a specific format and the webMethods wsdl will cause issues.

The app developer has asked me to move the “GetIncidentDetail” to be part of the “inc” namespace. Also, Authentication needs to be in the soap header.

Can you more experienced folks point me in the direction how to implement these changes? Again, am I missing something due to my inexperience? or is there a larger issue here?

Thanks for your help.

Additional info: IS 8.2 and Developer 8.2

Hi,

Firstly i assume that the xml’s you are referring above are soap requests and not WSDL’s.

For namespace changes, you can go to the service which was exposed and specify “XML namespace” property for the inputs of your service(Ex: http://www.inc.com for getting inc namespace).

For header assignment, you can create a provider handler where you can add header block by using service WmPublic/pub.soap.handler:addHeaderBlock (For more details on WS Handlers refer to the Developers guide).

I hope this was something useful for your query.

Regards,
Niteesh:happy:

Thanks Niteesh. I will look into your suggestions.

As I stated, web service development and I are new… so I am sure I am not getting the terminology correct.

As for the namespace, I was not expecting to have to modify what I was given, but seems if wM needs to present the service “on behalf of” the true service host… I guess some adjustment will be needed…

But here is another thing I tried… I imported the wsdl with ‘wm as provider’ (instead of the original ‘wm as consumer’ process) and when I looked at what was presented it was a perfect match. So maybe this addresses my issue?

But now how does wM ‘pass on’ the information to the true service host? I am sure I am not understanding something in webMethods or maybe I just still do not have a good enough foundation on web services in general???

I think I came across the handlers section the other day, but got pulled into something else and was unable to follow up.

Thanks again!