Agora estou tentando averbar um xml proprio do cliente, da Ordem de carregamento
Eu sempre faço o envelope e uso essa funcao MicrosoftXmlSoapPost (abaixo peguei aqui do forum sempre funcionou)
O que esta acontecendo é que o retorno esta vindo vazio...
E se pegar o mesmo envelope e colocar no SOAPUI, com o endereco do webservice, averba certinho
Entao nao sei o que pode ser , nao tem uma mensagem, apenas volta vazio,
Já entrei em contato com a ELT, mas o que posso argumentar já que via SOAPUI esta certo.
Alguma dica
Código: Selecionar todos
cWebservice := "http://www.eltseg04.com.br/ELTSEGWS/ELTSEGWS.svc?wsdl"
cSoapAction := "urn:ATMWebSvr#averbaCTe"
cOperation := "averbaCTe"
Código: Selecionar todos
FUNCTION MicrosoftXmlSoapPost( cXmlSoap, cSoapAction, cWebService )
LOCAL oServer, oDOMDoc, nCont, cRetorno := "*ERRO*", cXmlRetorno := ""
oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0")
oServer:Open( "POST", cWebService, .F. )
oServer:SetRequestHeader( "SOAPAction", cSoapAction )
oServer:SetRequestHeader( "Content-Type", "text/xml; charset=utf-8" )
oDOMDoc = Win_oleCREATEOBJECT("MSXML2.DOMDocument.5.0")
oDOMDoc:async = .F.
oDOMDoc:validateOnParse = .T.
oDOMDoc:resolveExternals := .F.
oDOMDoc:preserveWhiteSpace = .T.
oDOMDoc:LoadXML(cXmlSoap)
IF oDOMDoc:parseError:errorCode <> 0
? 'Erro: xML nao carregado'
RETURN Nil
ENDIF
TRY
oServer:send(oDOMDoc:xml)
CATCH oError
? 'Falha no envio do xML'
RETURN Nil
END
DO WHILE oServer:readyState <> 4
HB_milliseconds(500)
ENDDO
cRetorno := oServer:responseText
IF ValType( cRetorno ) == "C"
cXmlRetorno := cRetorno
ELSEIF cRetorno == NIL
cXmlRetorno := "*ERRO*"
ELSE
cXmlRetorno := ""
FOR nCont = 1 TO Len( cRetorno )
cXmlRetorno += Chr( cRetorno[ nCont ] )
NEXT
ENDIF
RETURN cXmlRetorno
*----------------------------------------------
FUNCTION SoapElt( cXml, cOperation )
LOCAL cXmlEnvelope
cXmlEnvelope:= '<?xml version="1.0" encoding="utf-8"?>'+hb_eol()+;
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">'+hb_eol()+;
' <soapenv:Header/>'+hb_eol()+;
' <soapenv:Body>'+hb_eol()+;
' <tem:'+cOperation+'>'+hb_eol()
cXmlEnvelope+= cXml
cXmlEnvelope+= ' </tem:'+cOperation+'>'+hb_eol()+;
' </soapenv:Body>'+hb_eol()+;
'</soapenv:Envelope>'
RETURN cXmlEnvelope
Código: Selecionar todos
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<averbaCTeResponse xmlns="urn:ATMWebSvr">
<Response xmlns=""/>
</averbaCTeResponse>
</s:Body>
</s:Envelope>
