You need to sign in to do that
Don't have an account?
Solees
WSDL Soap Callout Child Namespace
Hello friends,
i've been trying to make work a WSDL2Apex having child namespaces different from the parent. The solution is forget the WSDL2Apex since it will not add this namespace and the server will send you an error. Save your time please, I already loose 8 hours trying and finding stuff related and nothing worked.
Use the HttpRequest instead !!! And make the test in Developer ORG since there you can see the Request XML, other orgs won't work.
If you do this you won't need a Flat WSDL nor the requirements that Salesforce needs to import the WSDL.
So follow this steps:
1) Download SOAPUI
2) Create Project and import WSDL.
3) Get a success request and response.
4) Go to salesforce and create a Class that will send this SOAP callout.
5) Copy your SOAPUI request and paste it as a String.
6) Make changes for input variables.
This is an example of the Apex Code.
String s='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:car="http://www.blabla.com/CargaCatalogosWS" xmlns:car1="http://www.blabla.com/CargaCatalogosHHType">'+
'<soapenv:Header/>'+
'<soapenv:Body>'+
'<car:CargaCatalogosHHRequest>'+
'<car1:CargaCatalogosHHRequest>'+
'<CANAL>'+canal+'</CANAL>'+
'<FECHA>'+fecha+'</FECHA>'+
'</car1:CargaCatalogosHHRequest>'+
'</car:CargaCatalogosHHRequest>'+
'</soapenv:Body>'+
'</soapenv:Envelope>';
HttpRequest req = new HttpRequest();
req.setEndpoint('http://www.blabla.com/wbi_FuncionCargaCatalogosHH');
req.setMethod('POST');
req.setBody(s);
req.setHeader('Content-Type', 'text/xml');
req.setHeader('SOAPAction', '"http://www.blabla.com/CargaCatalogosWS"');
req.setHeader('Accept-Encoding', 'gzip,deflate');
req.setTimeout(120000);
Http http = new Http();
HTTPResponse res = http.send(req);
i've been trying to make work a WSDL2Apex having child namespaces different from the parent. The solution is forget the WSDL2Apex since it will not add this namespace and the server will send you an error. Save your time please, I already loose 8 hours trying and finding stuff related and nothing worked.
Use the HttpRequest instead !!! And make the test in Developer ORG since there you can see the Request XML, other orgs won't work.
If you do this you won't need a Flat WSDL nor the requirements that Salesforce needs to import the WSDL.
So follow this steps:
1) Download SOAPUI
2) Create Project and import WSDL.
3) Get a success request and response.
4) Go to salesforce and create a Class that will send this SOAP callout.
5) Copy your SOAPUI request and paste it as a String.
6) Make changes for input variables.
This is an example of the Apex Code.
String s='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:car="http://www.blabla.com/CargaCatalogosWS" xmlns:car1="http://www.blabla.com/CargaCatalogosHHType">'+
'<soapenv:Header/>'+
'<soapenv:Body>'+
'<car:CargaCatalogosHHRequest>'+
'<car1:CargaCatalogosHHRequest>'+
'<CANAL>'+canal+'</CANAL>'+
'<FECHA>'+fecha+'</FECHA>'+
'</car1:CargaCatalogosHHRequest>'+
'</car:CargaCatalogosHHRequest>'+
'</soapenv:Body>'+
'</soapenv:Envelope>';
HttpRequest req = new HttpRequest();
req.setEndpoint('http://www.blabla.com/wbi_FuncionCargaCatalogosHH');
req.setMethod('POST');
req.setBody(s);
req.setHeader('Content-Type', 'text/xml');
req.setHeader('SOAPAction', '"http://www.blabla.com/CargaCatalogosWS"');
req.setHeader('Accept-Encoding', 'gzip,deflate');
req.setTimeout(120000);
Http http = new Http();
HTTPResponse res = http.send(req);
Best Answer chosen by Solees
Solees
And remember if the WebServices send you a lot of information, use the @future (callout=true)