Jyotie Navale
Jyotie Navale

Reputation: 122

Need an example of sending xml data from salesforce to external server/another salesforce org using http post request

I am learning REST apis, in which I can post a single record. Till now I have sent data/params for GET/POST/PUT in json format (HttpRequest/HttpResponse), but now I want to handle a bulky calls. Anyone having an example for the same?...I googled it but I am confused about how to start...so want a runing code if possible. Thanks in advance

Upvotes: 1

Views: 1544

Answers (1)

Saam
Saam

Reputation: 49

Here is an example for xml:

@RestResource(urlMapping='/GETSaamTestSearches/*')
global with sharing class GETSaamTestSearches
{
    @HttpGet
    global static void doGet() {
        string sResOutPut = '';
        try {
            RestRequest req = RestContext.request;
            RestResponse res = RestContext.response;
            res.addHeader('Content-Type', 'application/xml');
            SVendorId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
            sResOutPut = '<?xml version=\'1.0\' encoding=\'UTF-8\'?>';
            sResOutPut += '<SearchestoProcess>';
            date dCurrentDate = System.today();
            sResOutPut += '<records>';

            for (Background_Search__c oBGS : [SELECT Id,.... FROM SalesforceObject Limit 500] ) {
                sResOutPut += '<row>';
                //************************************
                sResOutPut += '<SubjectAddress>'+ChecknullString(oBGS.Subject_Address__c)+'</SubjectAddress>';
                sResOutPut += '<SubjectCity>'+ChecknullString(oBGS.Subject_City__c)+'</SubjectCity>';
                sResOutPut += '<SubjectState>'+ChecknullString(oBGS.Subject_State__c)+'</SubjectState>';
                sResOutPut += '<SubjectZipCode>'+ChecknullString(oBGS.Subject_Zip_Code__c)+'</SubjectZipCode>';
                sResOutPut += '<SearchTypeName>'+ChecknullString(oBGS.Search_Type_Name__c)+'</SearchTypeName>'; 

                sResOutPut += '<State>'+ChecknullString(oBGS.Jurisdiction__r.State_Name__c)+'</State>'; 
                sResOutPut += '<TimeFrame>7</TimeFrame>';   
                sResOutPut += '<NotesToResearcher>'+ChecknullString(oBGS.Notes_Pre_to_Researcher__c)+'</NotesToResearcher>';    
                sResOutPut += '<SearchID>'+ChecknullString(oBGS.ID)+'</SearchID>';  
                //************************************
                sResOutPut += '</row>';
            }
            sResOutPut += '</records>';
            sResOutPut += '<message>Success</message>';
            sResOutPut += '</SearchestoProcess>';
            //*******test the generate xml is correct or not by loading it in Dom document
            Dom.Document domDoc = new Dom.Document();
            domDoc.load(sResOutPut);
        }
        catch(exception ex) {
          sResOutPut = '<?xml version=\'1.0\' encoding=\'UTF-8\'?><SearchestoProcess><message>';
          sResOutPut += 'Error while processing the records +'+ex.getmessage()+'</message></SearchestoProcess>';
        }
        RestContext.response.responseBody = Blob.valueOf(sResOutPut);
    }

    public static string SVendorId {get; private set;}

    public static string ChecknullString(string sVal)
    {
      if(sVal == null) {
          sVal = '';
      }
      else {
          //*****XML scape charactor
          sVal = sVal.Replace('&', '&amp;').Replace('>', '&gt;').Replace('<', '&lt;').Replace('\'', '&apos;').Replace('"', '&quot;');
      }
      return sVal;
    }

    private static string ChecknullNFormatDate(date sVal)
    {
        string sRetVal = ''; 
      if(sVal == null) {
        sRetVal = '';
      }
      else {
        sRetVal = sVal.format();
      }
      return sRetVal;
    }
}

Upvotes: 1

Related Questions