• SUSHEELA KUCHIMANCHI
  • NEWBIE
  • 0 Points
  • Member since 2017

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 2
    Questions
  • 1
    Replies
global with sharing class Loginsalesforcesoap {

    private static final String NS_SOAP = 'http://schemas.xmlsoap.org/soap/envelope/';
    private static final String NS_SF = 'urn:partner.soap.sforce.com';
   
global static string login()
     {
    List<Integration__C> ic       = Integration__C.getall().values();
       String password,user;
       if(ic.size()>0){
       if(ic[0].Name=='PartsRestAPILogin'){
                      // key= ic[0].Key__c;
                       password = ic[0].Password__c;
                     //  token = ic[0].Token__c;
                       user = ic[0].UserName__c;
       }
       } 
      // String password,user;  
      // user='susheela.kuchimanchi@navistar.com.navpart';
       //password='satyasai9';
        // As per http://wiki.developerforce.com/page/Enterprise_Login
        HttpRequest  req = new HttpRequest();
        req.setMethod('POST');   
        req.setTimeout(60000);
        req.setEndpoint(URL.getSalesforceBaseUrl().toExternalForm() +'/services/Soap/u/37.0');
        req.setHeader('Content-Type', 'text/xml;charset=UTF-8');        
        req.setHeader('SOAPAction', '""');
        req.setBody('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Header/><Body><login xmlns="urn:partner.soap.sforce.com"><username>' +user+ '</username><password>' + password + '</password></login></Body></Envelope>');        
        HttpResponse res =  new Http().send(req);
       System.debug(res);
         if(res.getStatusCode() != 200)
        {
            Dom.Document responseDocument = res.getBodyDocument();
            Dom.Xmlnode rootElm = responseDocument.getRootElement(); // soapenv:Envelope
            Dom.Xmlnode bodyElm = rootElm.getChildElement('Body', NS_SOAP); // soapenv:Body 
            Dom.Xmlnode faultElm = bodyElm.getChildElement('Fault', NS_SOAP); // soapenv:Fault
            Dom.Xmlnode faultStringElm = faultElm.getChildElement('faultstring', null); // faultstring          
            system.debug('the statuscode is not 200 ');
            system.debug(faultStringElm);
            throw new LoginException(faultStringElm.getText()); 
 
        }
        system.debug('the statuscode is 200');
        Dom.Document responseDocument = res.getBodyDocument();
        Dom.Xmlnode rootElm = responseDocument.getRootElement(); // soapenv:Envelope
        system.debug('rootElm is:'+rootElm);
        Dom.Xmlnode bodyElm = rootElm.getChildElement('Body', NS_SOAP); // soapenv:Body 
         system.debug('bodyelm is:'+bodyElm);
        Dom.Xmlnode loginResponseElm = bodyElm.getChildElement('loginResponse', NS_SF); // loginResponse
       system.debug('loginResponseElm:'+loginResponseElm);
         Dom.Xmlnode resultElm = loginResponseElm.getChildElement('result', NS_SF); // result
         system.debug('resultElm:'+resultElm);
        Dom.Xmlnode sessionIdElm = resultElm.getChildElement('sessionId', NS_SF); // sessionId
         system.debug('sessionid is:'+sessionIdElm.getText());
        return sessionIdElm.getText();
    }      

  public class LoginException extends Exception{}
}
httpResponse [{"message":"Session expired or invalid","errorCode":"INVALID_SESSION_ID"}]
I am getting this error when I am making a rest API callout from execute batch apex.
Where as if I make the Rest api callout from Anonymous window I am not getting any error.
Can any one tell me if  the Session ID be different for Rest api call out from Batch and Anonymous window.
Hi,
  Please give me steps to post a question in developer.salesforce.com after login in.
  I have had hard time to find a button: "Post a question", sometimes it does not come up.

Thanks
​tina