The application layer, the part responsible for responding to API calls, page views, and so on, directs requests to /services/Soap/class/ to an appropriate handler that loads the application binary for that class (much like the Java Class Loader loads classes) and translates the parameters from XML to native objects, runs the code, and handles the translation back from native objects to XML.
The internal logging systems will record every request, even those that fail, and several class of employees have access to some version of the logs. However, depending on when the call fails, you might not have access to those logs. For example, if you don't have a session header, then there's no way you could possibly log that on the salesforce.com end.
In fact, it seems like anything that causes an error before the transaction starts never reaches the client-level logging system. For assistance with SOAP problems where you can't even get a log, you'll need to contact Developer Support, or ask a specific question here on SFSE. We'll do our best to help you out. Also, consider using a SOAP client like SOAPClient.com against your WSDL and see what happens.
If you need to ask a question here, be sure to include a (redacted) sample of your SOAP request and response, and possibly even the relevant part of your WSDL, plus the exact error message. The more information we have, the better we can help assist you.
Salesforce provides a WSDL (Web Service Description Language) files. They are called "Enterprise WSDL" and "Partner WSDL". A WSDL is an XML-document which contains a standardized description on how to communicate using a web service (the Salesforce API is exposed as a web service). The WSDL is used by developers to aid in the creation of Salesforce integration pieces. A typical process involves using the Development Environment (eg, Eclipse for Java, or Visual Studio for .Net) to consume the WSDL, and generate classes which are then referenced in the integration.
Enterprise WSDL:
This WSDL document is for customers who want to build an integration with their Salesforce organization only. It is strongly typed, which means that it contains objects and fields with specific data types, such as integer and string. Customers who use the enterprise WSDL document must download and re-consume it whenever their organization makes a change to its custom objects or fields or whenever they want to use a different version of the API.
For the reasons outlined above, the Enterprise WSDL is intended primarily for Customers.
Partner WSDL:
This WSDL document is for customers, partners, and ISVs who want to build an integration that can work across multiple Salesforce organizations, regardless of their custom objects or fields. It is loosely typed, which means that you work with name-value pairs of field names and values instead of specific data types. The partner WSDL document only needs to be downloaded and consumed once per version of the API.
https://help.salesforce.com/apex/HTViewSolution?id=000004760&language=en_US
https://developer.salesforce.com/page/Apex_Web_Services_and_Callouts
You have to use methods of thoose generated files for CRUD operation.
Check out methods for CRUD http://developer.force.com/cookbook/recipe/calling-salesforce-web-services-using-apex
Callout Example
// here lstAccountToUpdate the list of Account records
partnerSoapSforceCom.Soap obj = new partnerSoapSforceCom.Soap();
partnerSoapSforceCom.LoginResult loginResult = obj.login('org@username.com', 'Password'); //your org username and pass
obj.SessionHeader = new partnerSoapSforceCom.SessionHeader_element();
obj.endpoint_x =loginResult.ServerUrl;
obj.Sessionheader.sessionid = loginResult.sessionid;
List<sobjectPartnerSoapSforceCom.sObject_x> lst = new List<sobjectPartnerSoapSforceCom.sObject_x>();
for(Account ac:lstAccountToUpdate)
{
sobjectPartnerSoapSforceCom.sObject_x tmpObj = new sobjectPartnerSoapSforceCom.sObject_x();
tmpObj.type_x = 'Account';
tmpObj.Id = ac.Id;
lst.add(tmpObj);
}
partnerSoapSforceCom.SaveResult[] lst1 =obj.update_x(lst);
Yes Related to above WSDL.
You just need to use generated class.
like
wwwWebservicexNet.GlobalWeatherSoap obj = new wwwWebservicexNet.GlobalWeatherSoap();
system.debug(obj.GetCitiesByCountry('INDIA')); // this will return all the cities
system.debug(obj.GetWeather('Bombay / Santacruz', 'INDIA')); // this will return the Weather of Bombay / Santacruz city.
try this code in execute anonymous.
Best Answer
Are you sure you are invoking the logout() method from the right Connection object?
Also make sure you are not sending the request to the wrong endpoint.
Enterprise API v/s Partner API.
See:
http://boards.developerforce.com/t5/General-Development/Dreaded-No-operation-available-for-request-on-SOAP-API-call/m-p/377085#M64457
I have used logout() in most of my code especially with C# and Java and never had an issue so far. Do you have any code you can share?
Other things could be the case...it needs to be lowercase. Also please check if your wsdl was saved properly. Does it have a definition for logout()?
Please see:
http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_logout.htm