You need to sign in to do that
Don't have an account?
Help with WSDL, Custom Type Array, Web Service Callout, and DataTable
I'm new to Salesforce development, so please forgive my ignorance.
What I'm trying to do: Receive data from my web service and format it into a data table
When I test my web service in the browser, it returns the data I need:
<?xml version="1.0" encoding="UTF-8"?>
<lfdocid>19</lfdocid>
<lfdocname>CD451796 - Edge Communications - Account</lfdocname>
<lfdocpages>1</lfdocpages>
<lfdoctemplate>Account</lfdoctemplate>
<lfdocpath>\Accounts</lfdocpath>
</LFIDoc>
<lfdocid>21</lfdocid>
<lfdocname>CD451796 - Edge Communications - Contact</lfdocname>
<lfdocpages>1</lfdocpages>
<lfdoctemplate>Account</lfdoctemplate>
<lfdocpath>\Accounts</lfdocpath>
</LFIDoc>
<lfdocid>10</lfdocid>
<lfdocname>CD451796 - Edge Communications - History</lfdocname>
<lfdocpages>1</lfdocpages>
<lfdoctemplate>Account</lfdoctemplate>
<lfdocpath>\Accounts</lfdocpath>
</LFIDoc>
<lfdocid>23</lfdocid>
<lfdocname>CD451796 - Edge Communications - Location</lfdocname>
<lfdocpages>1</lfdocpages>
<lfdoctemplate>Account</lfdoctemplate>
<lfdocpath>\Accounts</lfdocpath>
</LFIDoc>
<LFIDocxsi:nil="true"/>
</ArrayOfLFIDoc>
I created the class by using the WSDL:
//Generated by wsdl2apex public class LFIWebService { public class LFSearch_element { public String LFServer; public String LFRepo; public String LFUser; public String LFPassword; public String strID; public String strName; private String[] LFServer_type_info = new String[]{'LFServer','http://www.w3.org/2001/XMLSchema','string','0','1','false'}; private String[] LFRepo_type_info = new String[]{'LFRepo','http://www.w3.org/2001/XMLSchema','string','0','1','false'}; private String[] LFUser_type_info = new String[]{'LFUser','http://www.w3.org/2001/XMLSchema','string','0','1','false'}; private String[] LFPassword_type_info = new String[]{'LFPassword','http://www.w3.org/2001/XMLSchema','string','0','1','false'}; private String[] strID_type_info = new String[]{'strID','http://www.w3.org/2001/XMLSchema','string','0','1','false'}; private String[] strName_type_info = new String[]{'strName','http://www.w3.org/2001/XMLSchema','string','0','1','false'}; private String[] apex_schema_type_info = new String[]{'http://webservices.cpgnet.com/LFIWebService/','true','false'}; private String[] field_order_type_info = new String[]{'LFServer','LFRepo','LFUser','LFPassword','strID','strName'}; } public class LFIWebServiceSoap { public String endpoint_x = 'http://webservices.cpgnet.com/LFIWebService/LFIWebService.asmx'; 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; private String[] ns_map_type_info = new String[]{'http://webservices.cpgnet.com/LFIWebService/', 'LFIWebService'}; public LFIWebService.ArrayOfLFIDoc LFSearch(String LFServer,String LFRepo,String LFUser,String LFPassword,String strID,String strName) { LFIWebService.LFSearch_element request_x = new LFIWebService.LFSearch_element(); LFIWebService.LFSearchResponse_element response_x; request_x.LFServer = LFServer; request_x.LFRepo = LFRepo; request_x.LFUser = LFUser; request_x.LFPassword = LFPassword; request_x.strID = strID; request_x.strName = strName; Map<String, LFIWebService.LFSearchResponse_element> response_map_x = new Map<String, LFIWebService.LFSearchResponse_element>(); response_map_x.put('response_x', response_x); WebServiceCallout.invoke( this, request_x, response_map_x, new String[]{endpoint_x, 'http://webservices.cpgnet.com/LFIWebService/LFSearch', 'http://webservices.cpgnet.com/LFIWebService/', 'LFSearch', 'http://webservices.cpgnet.com/LFIWebService/', 'LFSearchResponse', 'LFIWebService.LFSearchResponse_element'} ); response_x = response_map_x.get('response_x'); return response_x.LFSearchResult; } } public class ArrayOfLFIDoc { public LFIWebService.LFIDoc[] LFIDoc; private String[] LFIDoc_type_info = new String[]{'LFIDoc','http://webservices.cpgnet.com/LFIWebService/','LFIDoc','0','-1','true'}; private String[] apex_schema_type_info = new String[]{'http://webservices.cpgnet.com/LFIWebService/','true','false'}; private String[] field_order_type_info = new String[]{'LFIDoc'}; } public class LFSearchResponse_element { public LFIWebService.ArrayOfLFIDoc LFSearchResult; private String[] LFSearchResult_type_info = new String[]{'LFSearchResult','http://webservices.cpgnet.com/LFIWebService/','ArrayOfLFIDoc','0','1','false'}; private String[] apex_schema_type_info = new String[]{'http://webservices.cpgnet.com/LFIWebService/','true','false'}; private String[] field_order_type_info = new String[]{'LFSearchResult'}; } public class LFIDoc { public String lfdocid; public String lfdocname; public String lfdocpages; public String lfdoctemplate; public String lfdocpath; private String[] lfdocid_type_info = new String[]{'lfdocid','http://www.w3.org/2001/XMLSchema','string','0','1','false'}; private String[] lfdocname_type_info = new String[]{'lfdocname','http://www.w3.org/2001/XMLSchema','string','0','1','false'}; private String[] lfdocpages_type_info = new String[]{'lfdocpages','http://www.w3.org/2001/XMLSchema','string','0','1','false'}; private String[] lfdoctemplate_type_info = new String[]{'lfdoctemplate','http://www.w3.org/2001/XMLSchema','string','0','1','false'}; private String[] lfdocpath_type_info = new String[]{'lfdocpath','http://www.w3.org/2001/XMLSchema','string','0','1','false'}; private String[] apex_schema_type_info = new String[]{'http://webservices.cpgnet.com/LFIWebService/','true','false'}; private String[] field_order_type_info = new String[]{'lfdocid','lfdocname','lfdocpages','lfdoctemplate','lfdocpath'}; } }
When I get the return data into Salesforce, it looks like this:
LFIWebService.ArrayOfLFIDoc:[LFIDoc=(LFIWebService.LFIDoc:[apex_schema_type_info=(http://webservices.cpgnet.com/LFIWebService/, true, false), field_order_type_info=(lfdocid, lfdocname, lfdocpages, lfdoctemplate, lfdocpath), lfdocid=19, lfdocid_type_info=(lfdocid, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocname=CD451796 - Edge Communications - Account, lfdocname_type_info=(lfdocname, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocpages=1, lfdocpages_type_info=(lfdocpages, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocpath=\Accounts, lfdocpath_type_info=(lfdocpath, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdoctemplate=Account, lfdoctemplate_type_info=(lfdoctemplate, http://www.w3.org/2001/XMLSchema, string, 0, 1, false)], LFIWebService.LFIDoc:[apex_schema_type_info=(http://webservices.cpgnet.com/LFIWebService/, true, false), field_order_type_info=(lfdocid, lfdocname, lfdocpages, lfdoctemplate, lfdocpath), lfdocid=21, lfdocid_type_info=(lfdocid, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocname=CD451796 - Edge Communications - Contact, lfdocname_type_info=(lfdocname, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocpages=1, lfdocpages_type_info=(lfdocpages, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocpath=\Accounts, lfdocpath_type_info=(lfdocpath, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdoctemplate=Account, lfdoctemplate_type_info=(lfdoctemplate, http://www.w3.org/2001/XMLSchema, string, 0, 1, false)], LFIWebService.LFIDoc:[apex_schema_type_info=(http://webservices.cpgnet.com/LFIWebService/, true, false), field_order_type_info=(lfdocid, lfdocname, lfdocpages, lfdoctemplate, lfdocpath), lfdocid=10, lfdocid_type_info=(lfdocid, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocname=CD451796 - Edge Communications - History, lfdocname_type_info=(lfdocname, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocpages=1, lfdocpages_type_info=(lfdocpages, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocpath=\Accounts, lfdocpath_type_info=(lfdocpath, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdoctemplate=Account, lfdoctemplate_type_info=(lfdoctemplate, http://www.w3.org/2001/XMLSchema, string, 0, 1, false)], LFIWebService.LFIDoc:[apex_schema_type_info=(http://webservices.cpgnet.com/LFIWebService/, true, false), field_order_type_info=(lfdocid, lfdocname, lfdocpages, lfdoctemplate, lfdocpath), lfdocid=23, lfdocid_type_info=(lfdocid, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocname=CD451796 - Edge Communications - Location, lfdocname_type_info=(lfdocname, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocpages=1, lfdocpages_type_info=(lfdocpages, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocpath=\Accounts, lfdocpath_type_info=(lfdocpath, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdoctemplate=Account, lfdoctemplate_type_info=(lfdoctemplate, http://www.w3.org/2001/XMLSchema, string, 0, 1, false)], LFIWebService.LFIDoc:[apex_schema_type_info=(http://webservices.cpgnet.com/LFIWebService/, true, false), field_order_type_info=(lfdocid, lfdocname, lfdocpages, lfdoctemplate, lfdocpath), lfdocid=null, lfdocid_type_info=(lfdocid, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocname=null, lfdocname_type_info=(lfdocname, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocpages=null, lfdocpages_type_info=(lfdocpages, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdocpath=null, lfdocpath_type_info=(lfdocpath, http://www.w3.org/2001/XMLSchema, string, 0, 1, false), lfdoctemplate=null, lfdoctemplate_type_info=(lfdoctemplate, http://www.w3.org/2001/XMLSchema, string, 0, 1, false)]), LFIDoc_type_info=(LFIDoc, http://webservices.cpgnet.com/LFIWebService/, LFIDoc, 0, -1, true), apex_schema_type_info=(http://webservices.cpgnet.com/LFIWebService/, true, false), field_order_type_info=(LFIDoc)]
I've tried multiple different routines to loop through the array being returned so I can display my data, however I just can't get it! I'm lost, and can use any help!
Thanks in advance :-)
Jerri