Invalid_Type (Integration Salesforce)

Posted by willians.ambrosio on 23-Jan-2018 11:21

Hi

I'm trying to consume a webservice from salesforce (Create), but when I call create it gives this error. Follow the source of the program if someone can help me.

I have already tested all other webservices only create gives this error.

I would be grateful.

/* Description ---------------------------------------------------------------*/
/* */
/* SOAP Message Request Handler */
/* */
/* Notes ---------------------------------------------------------------------*/
/* */
/* 'SessionHeader' and 'sessionId' are case-sensitive elements! */
/* */
/* Parameters ----------------------------------------------------------------*/
/* */
/* <none> */
/* */
/* Examples ------------------------------------------------------------------*/
/* */
/* */
/* */
/*----------------------------------------------------------------------------*/

DEFINE VARIABLE username AS CHARACTER NO-UNDO.
DEFINE VARIABLE password AS CHARACTER NO-UNDO.
DEFINE VARIABLE result AS LONGCHAR NO-UNDO.
DEFINE VARIABLE cUserId AS CHARACTER NO-UNDO.
DEFINE VARIABLE cSessionId AS CHARACTER NO-UNDO.
DEFINE VARIABLE cServerUrl AS CHARACTER NO-UNDO.
DEFINE VARIABLE hWebService AS HANDLE NO-UNDO.
DEFINE VARIABLE hWebService2 AS HANDLE NO-UNDO.
DEFINE VARIABLE hSoap AS HANDLE NO-UNDO.
DEFINE VARIABLE hSoap2 AS HANDLE NO-UNDO.
DEFINE VARIABLE cResult AS CHARACTER NO-UNDO.
/*1*/
/* Define local variables */
DEFINE VARIABLE hWebSrvc AS HANDLE.
DEFINE VARIABLE hPortType AS HANDLE.
DEFINE VARIABLE hXdoc AS HANDLE.
DEFINE VARIABLE hXnoderef1 AS HANDLE.
DEFINE VARIABLE hXnoderef2 AS HANDLE.
DEFINE VARIABLE hXtext AS HANDLE.
DEFINE VARIABLE xroot AS HANDLE.
DEFINE VARIABLE lcHeader AS LONGCHAR NO-UNDO.
DEFINE VARIABLE g_header AS HANDLE.
DEFINE VARIABLE hRootField AS HANDLE NO-UNDO.

DEFINE VARIABLE parameters1 AS LONGCHAR NO-UNDO.
DEFINE VARIABLE parameters2 AS LONGCHAR NO-UNDO.

assign username = {1}
password = {2}.

/* ------------------------------------------------------------------------------------ */
CREATE SERVER hWebService.
/* ------------------------------------------------------------------------------------ */
hWebService:CONNECT("-WSDL 'salesforce.wsdl'").
/* ------------------------------------------------------------------------------------ */
RUN Soap SET hSoap ON hWebService.
/* ------------------------------------------------------------------------------------ */
ASSIGN parameters1 =
'<login xmlns:ns0="urn:enterprise.soap.sforce.com">' +
'<username>' + username + '</username>' +
'<password>' + password + '</password>' +
'</login>'.

/* ------------------------------------------------------------------------------------ */
/* Procedure invocation of login operation. */
RUN login IN hSoap(INPUT parameters1, OUTPUT parameters2).
/* ------------------------------------------------------------------------------------ */
ASSIGN cResult = STRING(parameters2)
cSessionId = SUBSTRING(cResult,INDEX(cResult,"<sessionId>") + 11,LENGTH(cResult))
cSessionId = SUBSTRING(cSessionId,1,INDEX(cSessionId,"</sessionId>") - 1)
cServerUrl = SUBSTRING(cResult,INDEX(cResult,"<serverUrl>") + 11,LENGTH(cResult))
cServerUrl = "-WSDL " + SUBSTRING(cServerUrl,1,INDEX(cServerUrl,"</serverUrl>") - 1) + ".wsdl"
cUserId = SUBSTRING(cResult,INDEX(cResult,"<userId>") + 8,LENGTH(cResult))
cUserId = SUBSTRING(cUserId,1,INDEX(cUserId,"</userId>") - 1).

/* ------------------------------------------------------------------------------------ */
assign cServerUrl = "-WSDL " + 'salesforce.wsdl' +
" -SOAPEndpoint " + cServerUrl +
" -SOAPEndpointUserid " + cUserId +
" -SOAPEndpointPassword " + password.
/* ------------------------------------------------------------------------------------ */
/* Build global SOAP request header */
/* ------------------------------------------------------------------------------------ */
CREATE SERVER hWebService2.
/* ------------------------------------------------------------------------------------ */
hWebService2:CONNECT(cServerUrl).
/* ------------------------------------------------------------------------------------ */
RUN Soap SET hSoap2 ON hWebService2.

hSoap2:set-callback-procedure("REQUEST-HEADER", "ySFReqHandler").
/* ------------------------------------------------------------------------------------ */
assign parameters1 =
'<ns0:create xmlns:ns0="urn:enterprise.soap.sforce.com">' +
'<ns0:sObjects type="Lead">' +
'<LastName>Gilma Silva2</LastName>' +
'<Company>ACME</Company>' +
'<Status>Pesquisa/consideração2</Status>' +
'<FirstName>GilmaLeadTeste2</FirstName>' +
'<Email>Gilmasilva2@teste.com</Email>' +
'<phone>(11) 6876-54321</phone>' +
'</ns0:sObjects>' +
'</ns0:create>'
.

RUN create IN hSoap2(INPUT parameters1, OUTPUT parameters2).

copy-lob from parameters2 to file 'c:\temp\saida.xml' convert target codepage 'UTF-8'.

PROCEDURE ySFReqHandler :
/* Description ---------------------------------------------------------------*/
/* */
/* SOAP Message Request Handler */
/* */
/* Notes ---------------------------------------------------------------------*/
/* */
/* 'SessionHeader' and 'sessionId' are case-sensitive elements! */
/* */
/* Parameters ----------------------------------------------------------------*/
/* */
/* <none> */
/* */
/* Examples ------------------------------------------------------------------*/
/* */
/* */
/* */
/*----------------------------------------------------------------------------*/
define output parameter phHeader as handle.
define input parameter pcNamespace as character.
define input parameter pcLocalNS as character.
define output parameter plDeleteOnDone as logical.

define variable hHeaderEntryRef as handle no-undo.
define variable hXDoc as handle no-undo.
define variable hXRoot as handle no-undo.
define variable hXElement as handle no-undo.
define variable hXText as handle no-undo.
define variable ghHeader as handle no-undo.

delete object ghHeader no-error.

/* Build header XML */

create x-document hXDoc.
create x-noderef hXRoot.
create x-noderef hXElement.
create x-noderef hXText.

create soap-header ghHeader.
create soap-header-entryref hHeaderEntryRef.

ghHeader:add-header-entry(hHeaderEntryRef).

hXDoc:create-node-namespace(hXRoot, 'urn:enterprise.soap.sforce.com':U, 'SessionHeader':U, 'element':U).
hXDoc:append-child(hXRoot).
hXDoc:create-node-namespace(hXElement, 'urn:enterprise.soap.sforce.com':U, 'sessionId':U, 'element':U).
hXDoc:create-node (hXText, ?, 'text':U).
hXRoot:append-child (hXElement).
hXElement:append-child (hXText).
hXText:node-value = cSessionId.
hHeaderEntryref:set-node (hXRoot).

ASSIGN phHeader = ghHeader
plDeleteOnDone = YES.

finally:
delete object hHeaderEntryRef no-error.
delete object hXDoc no-error.
delete object hXRoot no-error.
delete object hXElement no-error.
delete object hXText no-error.
END.
/* finally */

end procedure. /* ReqHandler */

All Replies

Posted by willians.ambrosio on 26-Jan-2018 08:07

Hi, I've already solved the problem thanks!

This thread is closed