You need to sign in to do that
Don't have an account?
SKumar SFDC
SOAP API Error - Salesforce to Salesforce
Dear Folks,
I'm struggling to figure out the error and need your help. I'm trying to workout SOAP Integration between 2 salesforce org, encounteres below error. Pls help me out.
Error: Invalid Data. Review all error messages below to correct your data. Apex trigger AccountSyncSOAP caused an unexpected exception, contact your administrator: AccountSyncSOAP: execution of AfterInsert caused by: System.CalloutException: Callout from triggers are currently not supported.: Class.partnerSoapSforceCom.Soap.login: line 3410, column 1
APEX class:
public class AccountSyncSOAP {
public static void Connector(String name){
partnerSoapSforceCom.soap myPartnerSOAP = new partnerSoapSforceCom.soap();
partnerSoapSforceCom.LoginResult partnerLoginResult = myPartnerSOAP.login('username@username.com','PASSWORD+TOKENHgaWESnkrmTdX8ouH0BPJGmhE');
system.debug('partnerLoginResult >>>>>'+partnerLoginResult);
system.debug('partnerLoginResult >>>>>'+partnerLoginResult.sessionId);
soapAccount.SessionHeader_element webserviceSessionHeader = new soapAccount.SessionHeader_element();
webserviceSessionHeader.sessionId = partnerLoginResult.sessionId;
soapAccount.AccountSyncSOAP objA1 = new soapAccount.AccountSyncSOAP();
objA1.SessionHeader = webserviceSessionHeader;
String Id = objA1.createAccount(name);
system.debug('ID >>>>>> '+Id);
}
}
WSDL(Partner):
//Generated by wsdl2apex
public class soapAccount {
public class LogInfo {
public String category;
public String level;
private String[] category_type_info = new String[]{'category','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] level_type_info = new String[]{'level','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'category','level'};
}
public class DebuggingInfo_element {
public String debugLog;
private String[] debugLog_type_info = new String[]{'debugLog','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'debugLog'};
}
public class address {
public String city;
public String country;
public String countryCode;
public String geocodeAccuracy;
public String postalCode;
public String state;
public String stateCode;
public String street;
private String[] city_type_info = new String[]{'city','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] country_type_info = new String[]{'country','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] countryCode_type_info = new String[]{'countryCode','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] geocodeAccuracy_type_info = new String[]{'geocodeAccuracy','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] postalCode_type_info = new String[]{'postalCode','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] state_type_info = new String[]{'state','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] stateCode_type_info = new String[]{'stateCode','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] street_type_info = new String[]{'street','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'city','country','countryCode','geocodeAccuracy','postalCode','state','stateCode','street'};
}
public class SessionHeader_element {
public String sessionId;
private String[] sessionId_type_info = new String[]{'sessionId','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'sessionId'};
}
public class CallOptions_element {
public String client;
private String[] client_type_info = new String[]{'client','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'client'};
}
public class DebuggingHeader_element {
public soapAccount.LogInfo[] categories;
public String debugLevel;
private String[] categories_type_info = new String[]{'categories','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'0','-1','false'};
private String[] debugLevel_type_info = new String[]{'debugLevel','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'categories','debugLevel'};
}
public class location {
public Double latitude;
public Double longitude;
private String[] latitude_type_info = new String[]{'latitude','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] longitude_type_info = new String[]{'longitude','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'latitude','longitude'};
}
public class AllowFieldTruncationHeader_element {
public Boolean allowFieldTruncation;
private String[] allowFieldTruncation_type_info = new String[]{'allowFieldTruncation','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'allowFieldTruncation'};
}
public class createAccount_element {
public String Name;
private String[] Name_type_info = new String[]{'Name','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','true'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'Name'};
}
public class createAccountResponse_element {
public String result;
private String[] result_type_info = new String[]{'result','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','true'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'result'};
}
public class AccountSyncSOAP {
public String endpoint_x = 'https://ap1.salesforce.com/services/Soap/class/AccountSyncSOAP';
public Map<String,String> inputHttpHeaders_x;
public Map<String,String> outputHttpHeaders_x;
public String clientCertName_x;
public String clientCert_x;
public String clientCertPasswd_x;
public Integer timeout_x;
public soapAccount.SessionHeader_element SessionHeader;
public soapAccount.DebuggingInfo_element DebuggingInfo;
public soapAccount.AllowFieldTruncationHeader_element AllowFieldTruncationHeader;
public soapAccount.CallOptions_element CallOptions;
public soapAccount.DebuggingHeader_element DebuggingHeader;
private String SessionHeader_hns = 'SessionHeader=http://soap.sforce.com/schemas/class/AccountSyncSOAP';
private String DebuggingInfo_hns = 'DebuggingInfo=http://soap.sforce.com/schemas/class/AccountSyncSOAP';
private String AllowFieldTruncationHeader_hns = 'AllowFieldTruncationHeader=http://soap.sforce.com/schemas/class/AccountSyncSOAP';
private String CallOptions_hns = 'CallOptions=http://soap.sforce.com/schemas/class/AccountSyncSOAP';
private String DebuggingHeader_hns = 'DebuggingHeader=http://soap.sforce.com/schemas/class/AccountSyncSOAP';
private String[] ns_map_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP', 'soapAccount'};
public String createAccount(String Name) {
soapAccount.createAccount_element request_x = new soapAccount.createAccount_element();
request_x.Name = Name;
soapAccount.createAccountResponse_element response_x;
Map<String, soapAccount.createAccountResponse_element> response_map_x = new Map<String, soapAccount.createAccountResponse_element>();
response_map_x.put('response_x', response_x);
WebServiceCallout.invoke(
this,
request_x,
response_map_x,
new String[]{endpoint_x,
'',
'http://soap.sforce.com/schemas/class/AccountSyncSOAP',
'createAccount',
'http://soap.sforce.com/schemas/class/AccountSyncSOAP',
'createAccountResponse',
'soapAccount.createAccountResponse_element'}
);
response_x = response_map_x.get('response_x');
return response_x.result;
}
}
}
I'm struggling to figure out the error and need your help. I'm trying to workout SOAP Integration between 2 salesforce org, encounteres below error. Pls help me out.
Error: Invalid Data. Review all error messages below to correct your data. Apex trigger AccountSyncSOAP caused an unexpected exception, contact your administrator: AccountSyncSOAP: execution of AfterInsert caused by: System.CalloutException: Callout from triggers are currently not supported.: Class.partnerSoapSforceCom.Soap.login: line 3410, column 1
APEX class:
public class AccountSyncSOAP {
public static void Connector(String name){
partnerSoapSforceCom.soap myPartnerSOAP = new partnerSoapSforceCom.soap();
partnerSoapSforceCom.LoginResult partnerLoginResult = myPartnerSOAP.login('username@username.com','PASSWORD+TOKENHgaWESnkrmTdX8ouH0BPJGmhE');
system.debug('partnerLoginResult >>>>>'+partnerLoginResult);
system.debug('partnerLoginResult >>>>>'+partnerLoginResult.sessionId);
soapAccount.SessionHeader_element webserviceSessionHeader = new soapAccount.SessionHeader_element();
webserviceSessionHeader.sessionId = partnerLoginResult.sessionId;
soapAccount.AccountSyncSOAP objA1 = new soapAccount.AccountSyncSOAP();
objA1.SessionHeader = webserviceSessionHeader;
String Id = objA1.createAccount(name);
system.debug('ID >>>>>> '+Id);
}
}
WSDL(Partner):
//Generated by wsdl2apex
public class soapAccount {
public class LogInfo {
public String category;
public String level;
private String[] category_type_info = new String[]{'category','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] level_type_info = new String[]{'level','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'category','level'};
}
public class DebuggingInfo_element {
public String debugLog;
private String[] debugLog_type_info = new String[]{'debugLog','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'debugLog'};
}
public class address {
public String city;
public String country;
public String countryCode;
public String geocodeAccuracy;
public String postalCode;
public String state;
public String stateCode;
public String street;
private String[] city_type_info = new String[]{'city','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] country_type_info = new String[]{'country','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] countryCode_type_info = new String[]{'countryCode','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] geocodeAccuracy_type_info = new String[]{'geocodeAccuracy','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] postalCode_type_info = new String[]{'postalCode','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] state_type_info = new String[]{'state','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] stateCode_type_info = new String[]{'stateCode','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] street_type_info = new String[]{'street','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'city','country','countryCode','geocodeAccuracy','postalCode','state','stateCode','street'};
}
public class SessionHeader_element {
public String sessionId;
private String[] sessionId_type_info = new String[]{'sessionId','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'sessionId'};
}
public class CallOptions_element {
public String client;
private String[] client_type_info = new String[]{'client','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'client'};
}
public class DebuggingHeader_element {
public soapAccount.LogInfo[] categories;
public String debugLevel;
private String[] categories_type_info = new String[]{'categories','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'0','-1','false'};
private String[] debugLevel_type_info = new String[]{'debugLevel','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'categories','debugLevel'};
}
public class location {
public Double latitude;
public Double longitude;
private String[] latitude_type_info = new String[]{'latitude','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] longitude_type_info = new String[]{'longitude','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'latitude','longitude'};
}
public class AllowFieldTruncationHeader_element {
public Boolean allowFieldTruncation;
private String[] allowFieldTruncation_type_info = new String[]{'allowFieldTruncation','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'allowFieldTruncation'};
}
public class createAccount_element {
public String Name;
private String[] Name_type_info = new String[]{'Name','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','true'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'Name'};
}
public class createAccountResponse_element {
public String result;
private String[] result_type_info = new String[]{'result','http://soap.sforce.com/schemas/class/AccountSyncSOAP',null,'1','1','true'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP','true','false'};
private String[] field_order_type_info = new String[]{'result'};
}
public class AccountSyncSOAP {
public String endpoint_x = 'https://ap1.salesforce.com/services/Soap/class/AccountSyncSOAP';
public Map<String,String> inputHttpHeaders_x;
public Map<String,String> outputHttpHeaders_x;
public String clientCertName_x;
public String clientCert_x;
public String clientCertPasswd_x;
public Integer timeout_x;
public soapAccount.SessionHeader_element SessionHeader;
public soapAccount.DebuggingInfo_element DebuggingInfo;
public soapAccount.AllowFieldTruncationHeader_element AllowFieldTruncationHeader;
public soapAccount.CallOptions_element CallOptions;
public soapAccount.DebuggingHeader_element DebuggingHeader;
private String SessionHeader_hns = 'SessionHeader=http://soap.sforce.com/schemas/class/AccountSyncSOAP';
private String DebuggingInfo_hns = 'DebuggingInfo=http://soap.sforce.com/schemas/class/AccountSyncSOAP';
private String AllowFieldTruncationHeader_hns = 'AllowFieldTruncationHeader=http://soap.sforce.com/schemas/class/AccountSyncSOAP';
private String CallOptions_hns = 'CallOptions=http://soap.sforce.com/schemas/class/AccountSyncSOAP';
private String DebuggingHeader_hns = 'DebuggingHeader=http://soap.sforce.com/schemas/class/AccountSyncSOAP';
private String[] ns_map_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountSyncSOAP', 'soapAccount'};
public String createAccount(String Name) {
soapAccount.createAccount_element request_x = new soapAccount.createAccount_element();
request_x.Name = Name;
soapAccount.createAccountResponse_element response_x;
Map<String, soapAccount.createAccountResponse_element> response_map_x = new Map<String, soapAccount.createAccountResponse_element>();
response_map_x.put('response_x', response_x);
WebServiceCallout.invoke(
this,
request_x,
response_map_x,
new String[]{endpoint_x,
'',
'http://soap.sforce.com/schemas/class/AccountSyncSOAP',
'createAccount',
'http://soap.sforce.com/schemas/class/AccountSyncSOAP',
'createAccountResponse',
'soapAccount.createAccountResponse_element'}
);
response_x = response_map_x.get('response_x');
return response_x.result;
}
}
}
Try using @future(callout=true) to your Connector method!