1) Create a windows application
2) Put the following code in the form load event handler
Explaination is put in as comment
private void Form1_Load(object sender, EventArgs e)
{
// Login to the CRM server
string loginUrlString = “https://servername/Services/Integration?command=login”;
// Get the valid Session id to be appended for each subsequent request
String sessionID = ManageSession.Login(loginUrlString, @”orgname/username”, “pwd”);
try
{
// Download the opportunity wsdl from the Admin section of the CRM application
// Add web reference to the wsdl
// Create the instance of the opportunity entity
Opportunity myOpp = new Opportunity();
myOpp.Url = “https://servername/Services/Integration;jsessionid=” + sessionID;
// Set the query
// To find the record with sales stage as closed/won
queryType mySalesStage = new queryType();
mySalesStage.Value = “LIKE ‘Closed/Won'”;
// Values needed back from the server
// 1) Purchase Order Date
queryType myPODate = new queryType();
myPODate.Value = “”;
// 2) Purchase Order Number
queryType myPONumber = new queryType();
myPONumber.Value = “”;
// 2) Opportunity Name
queryType myOppName=new queryType();
myOppName.Value=“”;
// Create opportunityquery instance and set the appropriate parameters
OpportunityQuery myOppQuery = new OpportunityQuery();
myOppQuery.SalesStage = mySalesStage;
myOppQuery.dtPurchase_Order_Date = myPODate;
myOppQuery.stPurchase_Order_No = myPONumber;
myOppQuery.OpportunityName = myOppName;
// Set ListOfOpportunityQuery
ListOfOpportunityQuery lstOfOppQuery = new ListOfOpportunityQuery();
lstOfOppQuery.Opportunity = myOppQuery;
// Number of records to fetch
lstOfOppQuery.pagesize = “100”;
// set OpportunityQueryPage_Input
OpportunityQueryPage_Input myOppInput = new OpportunityQueryPage_Input();
myOppInput.ListOfOpportunity = lstOfOppQuery;
// Get the output
OpportunityQueryPage_Output myOutput = myOpp.OpportunityQueryPage(myOppInput);
// Get ListOfOpportunityData
ListOfOpportunityData myOppData = myOutput.ListOfOpportunity;
OpportunityData[] oppData = myOppData.Opportunity;
// Total number of records returned
MessageBox.Show(oppData.GetLength(0).ToString());
foreach(OpportunityData oData in oppData)
{
MessageBox.Show(“Opportunity Name :-“ + oData.OpportunityName
+ “, Opp PO Date =” + oData.dtPurchase_Order_Date.ToShortDateString()
+ ” Opp PO Number =” + oData.stPurchase_Order_No);
}
}
catch (SoapException ex)
{
MessageBox.Show(ex.Detail.InnerXml);
}
The code for ManageSession.Login static mehtod
public static String Login(String loginUrlString, String userName, String password)
{
try
{
// create a http request and set the headers for authentication
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(loginUrlString);
HttpWebResponse myResponse;
myRequest.Method = “POST”;
// passing username and password in the http header
// username format if it includes slash should be the forward slash /
myRequest.Headers[“UserName”] = userName;
myRequest.Headers[“Password”] = password;
myResponse = (HttpWebResponse)myRequest.GetResponse();
Stream sr = myResponse.GetResponseStream();
// retrieve session id
char[] sep = { ‘;’ };
String[] headers = myResponse.Headers[“Set-Cookie”].Split(sep);
for (int i=0; i <= headers.Length-1; i++)
{
if (headers[i].StartsWith(“JSESSIONID”))
{
sep[0] = ‘=’;
SessionID = headers[i].Split(sep)[1];
break;
}
}
sr.Close();
myResponse.Close();
}
catch (WebException webException)
{
}
catch (Exception ex)
{
}
// send back the session id that should be passed to subsequent calls
// to webservices
return SessionID;
}
That’s it …