0
public with sharing class CalloutHandler {

@future (callout=true)
public static void createAccount(String id)
{
    Http http = new Http();
    HttpRequest req = new HttpRequest();
    req.setHeader('Content-Type','application/x-www-form-urlencoded');
    String endPoint='https://portal/webapi/createorg.jsp';
    req.setEndpoint(endPoint);
    req.setMethod('POST');
    String accountinfo = getAccountDetail(id);
    System.debug(accountinfo);
    req.setBody(accountinfo);
    try{
        HttpResponse response = http.send(req);  
        if(response.getStatusCode() !=200)
        {
         System.debug('Status code return was not expected: '+ response.getStatusCode() +' '+response.getStatus());
        }
        else{
          String constitid =response.getBody();
          System.debug(constitid);  
          //some stuff
        } 
  }catch(System.CalloutException e){
      System.debug(e); 
 }

}

9
  • 1
    Take a look at these search results from this site. You must do the callout before you do any DML in the transaction.
    – Keith C
    Commented Jul 11, 2017 at 7:44
  • I have a web service call out that is working fine. The web service callout is triggered in an After Trigger, which call @future method in the above class , which then make the callout. In test class , In my testmethod for this, I start by setting up some test data(list of accouunt: accts) and inside Test.startTest and Test.stopTest , i mock the response first and then did dml operation : "insert accts". Commented Jul 11, 2017 at 7:45
  • I knew that inserts performed in test methods are not committed, thats why i am getting this error. but according to requirment, the callout is made from DML.( insert acc-> trigger -> call @future method -> call callout. Commented Jul 11, 2017 at 7:51
  • Add this extra detail to your question: are you saying you only get the error in your test case? If so include that in the question.
    – Keith C
    Commented Jul 11, 2017 at 8:26
  • While tesing in sandbox , i am not getting any error(Test method pass), but while deploying into production, its fail and gave me this error Commented Jul 11, 2017 at 9:05

0

You must log in to answer this question.

Browse other questions tagged .