Monday 23 February 2015

SALESFORCE INTEGRATION WITH .NET USING SOAP API

SALESFORCE INTEGRATION WITH .NET USING SOAP API  PART - 1
Required
1. .Net end point (or) WSDL wile 
NOTE : If client provides WSDL file no need to follow STEP 1 
STEP 1 :

Copy the .Net Endpoint given by the client (https://xxxxxxxxxxxx/gw/xxxx/nextgencrm/ldap.getpicture.dev)
Go to the web browser open new tap paste it and add (?wsdl
EX: https://xxxxxxxxxxxx/gw/xxxx/nextgencrm/ldap.getpicture.dev?wsdl 
Copy the XML data and paste in notepad or notepad++
Remove one binding and related port in that XML because sales force support only one binding
EX: 
Remove second binding and related port
Binding:
-------
<wsdl:binding name="LdapSoap12" type="tns:LdapSoap">
.
.
.</wsdl:binding>
Port:
-----
<wsdl:port2 name="LdapSoap" binding="tns:LdapSoap">
<soap:address location="xxxxxxxxxxxx" />
</wsdl:port2>
Save the file as MyService.wsdl on your desktop 
STEP 2:
Login in to your sales force account
Go to setup > Build > Develop > Apex
Click on Generated Apex

Browser and select MyService.wsdl file and Parse it
If successfully parse Change the name of class as MyDotnetService and save it

STEP 3 :

Open the class MyDotnetService it look like below example 
EX: 
public class MyDotnetService {
public class HelloWorld_element {
private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true','false'};
private String[] field_order_type_info = new String[]{};
}
public class HelloWorldResponse_element {
public String HelloWorldResult;
private String[] HelloWorldResult_type_info = new String[]{'HelloWorldResult','http://tempuri.org/',null,'0','1','false'};
private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true','false'};
private String[] field_order_type_info = new String[]{'HelloWorldResult'};
}
public class LdapSoap {
public String endpoint_x = 'https://xxxxxxxxxxxxxxxxxxxxxx/gw/xxxxxxxxxx/nextgencrm/ldap.getpicture.dev';
public Map<String,String> inputHttpHeaders_x;
public Map<String,String> outputHttpHeaders_x;
public String clientCertName_x;
public String clientCert_x;
public String clientCertPasswd_x;
public Integer timeout_x;
private String[] ns_map_type_info = new String[]{'http://tempuri.org/', 'MyDotnetService'};
public String HelloWorld() {
MyDotnetService.HelloWorld_element request_x = new MyDotnetService.HelloWorld_element();
MyDotnetService.HelloWorldResponse_element response_x;
Map<String, MyDotnetService.HelloWorldResponse_element> response_map_x = new Map<String, MyDotnetService.HelloWorldResponse_element>();
response_map_x.put('response_x', response_x);
WebServiceCallout.invoke(
this,
request_x,
response_map_x,
new String[]{endpoint_x,
'http://tempuri.org/HelloWorld',
'http://tempuri.org/',
'HelloWorld',
'http://tempuri.org/',
'HelloWorldResponse',
'MyDotnetService.HelloWorldResponse_element'}
);
response_x = response_map_x.get('response_x');
return response_x.HelloWorldResult;
}
}
STEP 4
Go > setup > Administer > Security Controls > Remote Site Settings > New Remote Site
Add Endpoint URL given by client
If client given WSDL file , Go to generated class ( MyDotnetService )

MyDotnetService > LdapSoap > endpoint_x

copy the end point and paste in remote site settings

STEP 5 :

Open the workbench or developer console

Copy class Name , sub class name , and method name like below example 
EX:

MyDotnetService.LdapSoap ldap = new MyDotnetService.LdapSoap();
String response = ldap.HelloWorld();
System.debug('response--------'+response); 
NOTE :

If time out error came, Add below code
ldap.TimeOut_x = 60000;

Now you successfully integrated sales force with .Net using SOAP API 
NOTE : This process is works only when client end point has no Authorization

No comments:

Post a Comment