Saturday, 2 February 2013

Problem with WSS or WSP headers in WSDL while using WSDL-APEX

WSDL to APEX is really a good feature to Support SOAP API callouts to the external system in force.com.

Although this feature provides us the stub classes for us to make callout usually its not simple to parse the WSDL to the apex classes .Reason being this out-of-box feature has numerous limitation and as a technical architect or an integration specialist must be aware of these limitations

Here is the link to the document where the limitations are documented in sfdc

http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_callouts_wsdl2apex.htm

I came across a situation of late where i was able to parse the WSDL and generate the API classes still i was not able to make callout with exception saying authentication failed .

For authentication its usually best to use HTTP headers and even WSDL to apex does support addition of HTTP headers .To understand this again the above link is very helpful.

My problem was more weird i had authentication headers in my WSDL and it had tags using WSS and WSP.

What are actually WSP and WSS?

https://wiki.servicenow.com/index.php?title=SOAP_Web_Service
http://docs.oracle.com/cd/E23943_01/web.1111/e13750/sec_assert.htm

I went to the link above and read the document of oracle and its a security protocol for webservices .To deep dig above two links are great.

Coming to my problem again

1)If salesforce WSDL>apex dont support then i should get error while parsing (WSDL parsed out with no issues )
2)How can i make changes to my generated classes if i need to add and make this work?

Thanks to stackexchange.I quickly posted and tweeted to sandeep,Patt and other evangelism at salesforce who can help me

http://salesforce.stackexchange.com/questions/7587/forming-soap-header-through-apex-class-if-the-wsdl-provided-has-no-information-r

Thankfully Sandeep Bhanot replied saying WSDL>APEX don't support this yet .

So we have only one alternative left is to make a HTTP callout instead by dynamically constructing the XML with SOAP headers .

The above is only an alternative and must be adapted when no other choice left .

Best approach is still look whether the server programming at the other end can be adjusted to use simple HTTP authentication then having authentication in SOAP header.

Hope this helps !Enjoy Integrating with salesforce!


Introducing Lightning Base Components

Lightning Base Components are great addition to the platform and in fact revolutionary .One of the concerns around lightning component ...