Perguntas Erro retorno WebService classe TWsdlManager

Mais
3 anos 11 meses atrás #32853 por will
Ao Tentar consumir o WebService app.ravex.com.br/sivirafull_homo/service.asmx?WSDL

no retorno da função oWsdl:GetSoapResponse() (linha 266) é retornado o seguinte erro:

The server cannot service the request because the media type is unsupported.

Conseguem me ajudar a como resolver esse erro, procurei no TDN não consegui achar nada a respeito?

Segue trecho do fonte,

#INCLUDE 'PROTHEUS.CH'
#INCLUDE 'APWEBSRV.CH'
#INCLUDE 'TBICONN.CH'
#INCLUDE 'TBICODE.CH'
#INCLUDE 'XMLXFUN.CH'
#INCLUDE 'FILEIO.CH'
#INCLUDE 'TOTVS.CH'
#INCLUDE 'RESTFUL.CH'
#INCLUDE 'TOPCONN.CH'

User Function ADLOG055P()

Private oResp := ''
Private aSays := {}
Private aButtons := {}
Private cCadastro := "Exportação Ravex"
Private nOpca := 0
Private cPerg := 'ADLOG055P'
Private nId := 0
Private cErro := ''
Private cCFOP := "( "+Alltrim(GETMV("MV_#CFOPRD"))+" )"
Private cEndereco := ''
Private cBairro := ''
Private cCidade := ''
Private cCep := ''
Private cEstado := ''
Private nLTRC := 0
Private nTotReg := 0
Private cPedidos := ''
Private aRot := {}
Private aRots := {}
PRIVATE aSimple := {}
PRIVATE aComplex := {}
PRIVATE oWsdl := NIL
PRIVATE lRet := NIL
PRIVATE aOps := {}
Private cRetWs := ''
Private oXml := NIL

U_ADINF009P(SUBSTRING(ALLTRIM(PROCNAME()),3,LEN(ALLTRIM(PROCNAME()))) + '.PRW',SUBSTRING(ALLTRIM(PROCNAME()),3,LEN(ALLTRIM(PROCNAME()))),'Programa consumir de webservice ravex para Importacao de Pedidos Ravex')

//+
+
//|Cria grupo de perguntas. |
//+
+
MontaPerg()

//+
+
//|Monta Form Batch - Interface com o usuário. |
//+
+
Aadd(aSays,"Este programa tem a finalidade de Consumir WebService Ravex " )
Aadd(aSays,"Exportar Pedidos para o Ravex" )

Aadd(aButtons, { 5,.T.,{|o| Pergunte(cPerg,.T.) }})
Aadd(aButtons, { 1,.T.,{|o| nOpca:=1, o:oWnd:End(), Processa({||IMPORTPED()},"Consumindo WebService","Aguarde...")}})
Aadd(aButtons, { 2,.T.,{|o| nOpca:=2, o:oWnd:End() }})

FormBatch(cCadastro, aSays, aButtons)

RETURN(NIL)

STATIC FUNCTION IMPORTPED()

Local cError := ''
Local cWarning := ''
Local cXml := ''
Local oXML := NIL

DelClassIntF() // COMANDO PARA LIMPAR A MEMORIA WILLIAM COSTA CHAMADO 041161 || ADM.LOG || DIEGO || INTEGRACAO RAVEX 02/05/2018

// Cria o objeto da classe TWsdlManager
oWsdl := TWsdlManager():New()
oWsdl:lProcResp := .F.
oWsdl:nTimeout := 900

//se a pergunta não tiver preenchida corretamente da mensagem de erro.
IF EMPTY(MV_PAR01) .OR.;
EMPTY(MV_PAR01) .OR.;
ALLTRIM(MV_PAR04) == ''

MSGSTOP("OLÁ " + Alltrim(cUserName) + ", Parâmetros não cadastrados corretamente, impossivel continuar.", "ADLOG055P-01")

RETURN(NIL)

ENDIF

lRet := oWsdl:ParseURL( " app.ravex.com.br/sivirafull_homo/service.asmx?WSDL " )

IF lRet == .F.

CONOUT( "Erro: " + oWsdl:cError )
RETURN(NIL)

ENDIF

aOps := oWsdl:ListOperations()

IF LEN(aOps) == 0

CONOUT( "Erro: " + oWsdl:cError )
RETURN(NIL)

ENDIF

// VARINFO( "", aOps )

// Define a operação
lRet := oWsdl:SetOperation("ImportarPedidos")

IF lRet == .F.

CONOUT( "Erro: " + oWsdl:cError )
RETURN(NIL)

ENDIF

cXml := '<?xml version="1.0" encoding="utf-8"?>'
cXml += '<soap:Envelope xmlns:soap=" schemas.xmlsoap.org/soap/envelope/ " xmlns:xsd=" www.w3.org/2001/XMLSchema " xmlns:xsi=" www.w3.org/2001/XMLSchema-instance ">'
cXml += ' <soap:Body>'
cXml += ' <ImportarPedidos xmlns=" app.ravex.com.br/sivirafull_homo/Service.asmx ">'
cXml += ' <Login>'+'olamundo'+'</Login>'
cXml += ' <Senha>'+'olamundo'+'</Senha>'
cXml += ' <Pedidos>'

SqlPedidos()
nTotReg := Contar("TRC","!Eof()")
ProcRegua(nTotReg)
TRC->(DbGoTop())

While TRC->(!EOF())

nLTRC := nLTRC + 1 //soma linha do nó
IncProc("PV: " + TRC->C5_NUM + ' ' + CVALTOCHAR(nLTRC) + '/' + CVALTOCHAR(nTotReg))

//Aadd(aClientes,u_ADLOG043P(TRC->C5_CLIENTE,TRC->C5_LOJACLI)) //Enviar o Cliente para o Ravex

cEndereco := ''
cBairro := ''
cCidade := ''
cCep := ''

IF Alltrim(TRC->A1_SATIV1)="50" .and. Alltrim(TRC->A1_SATIV2)$"51,52,53"

cEndereco := TRC->A1_ENDENT
cBairro := NOACENTO2(TRC->A1_BAIRROE)
cCidade := TRC->A1_MUNE
cCep := TRC->A1_CEPE
cEstado := TRC->A1_ESTE

ElseIf TRC->A1_IMPENT = "S" //Adoro para endereço de entrega diferente e cozinha industrial

cEndereco := TRC->A1_ENDENT
cBairro := NOACENTO2(TRC->A1_BAIRROE)
cCidade := TRC->A1_MUNE
cCep := TRC->A1_CEPE
cEstado := TRC->A1_ESTE

Else

cEndereco := TRC->A1_END
cBairro := TRC->A1_BAIRRO
cCidade := TRC->A1_MUN
cCep := TRC->A1_CEP
cEstado := TRC->A1_EST

Endif


cXml += ' <Pedido>'
cXml += ' <Numero>' + TRC->C5_NUM + '</Numero>'
cXml += ' <OrdemCarregamento>' + ALLTRIM(TRC->C5_ROTEIRO) + '</OrdemCarregamento>'
cXml += ' <SequenciaProgramada>' + TRC->C5_SEQUENC + '</SequenciaProgramada>'
cXml += ' <IdOperadorLogistico>' + '0' + '</IdOperadorLogistico>'
cXml += ' <IdEmbarcador>' + '0' + '</IdEmbarcador>'
cXml += ' <IdRemetente>' + '0' + '</IdRemetente>'
cXml += ' <IdUnidade>' + '0' + '</IdUnidade>'
cXml += ' <EstimativaEntrega>' + SUBSTR(TRC->C5_DTENTR,1,4) + '-' + SUBSTR(TRC->C5_DTENTR,5,2)+ '-' + SUBSTR(TRC->C5_DTENTR,7,2) + "T" + '00:00:00' + '</EstimativaEntrega>'
cXml += ' <CnpjRemetente>' + ALLTRIM(RetField('SM0',1,cEmpAnt+cFilAnt,'M0_CGC')) + '</CnpjRemetente>'
cXml += ' <DataPedido>' + SUBSTR(TRC->C5_DTENTR,1,4) + '-' + SUBSTR(TRC->C5_DTENTR,5,2)+ '-' + SUBSTR(TRC->C5_DTENTR,7,2) + "T" + '00:00:00' + '</DataPedido>'
cXml += ' <CnpjUnidade>' + ALLTRIM(RetField('SM0',1,cEmpAnt+cFilAnt,'M0_CGC')) + '</CnpjUnidade>'
cXml += ' <CnpjCliente>' + POSICIONE('SA1',1,xFilial("SA1")+TRC->C5_CLIENTE+TRC->C5_LOJACLI,'A1_CGC') + '</CnpjCliente>'
cXml += ' <NomeCliente>' + NoAcento2(ALLTRIM(POSICIONE('SA1',1,xFilial("SA1")+TRC->C5_CLIENTE+TRC->C5_LOJACLI,'A1_NOME'))) + '</NomeCliente>'
cXml += ' <EnderecoCliente>' + ALLTRIM(cEndereco) + '</EnderecoCliente>'
cXml += ' <CepCliente>' + ALLTRIM(cCep) + '</CepCliente>'
cXml += ' <BairroCliente>' + ALLTRIM(cBairro) + '</BairroCliente>'
cXml += ' <CidadeCliente>' + ALLTRIM(cCidade) + '</CidadeCliente>'
cXml += ' <EstadoCliente>' + ALLTRIM(cEstado) + '</EstadoCliente>'
cXml += ' <LatitudeCliente>' + STRTRAN(TRC->A1_XLATITU,',','.') + '</LatitudeCliente>
cXml += ' <LongitudeCliente>' + STRTRAN(TRC->A1_XLONGIT,',','.') + '</LongitudeCliente>'
cXml += ' <ValorPedido>' + CVALTOCHAR(TRC->C5_XTOTPED) + '</ValorPedido>'
cXml += ' <PesoLiquido>' + CVALTOCHAR(TRC->C5_PESOL) + '</PesoLiquido>'
cXml += ' <PesoBruto>' + CVALTOCHAR(TRC->C5_PBRUTO) + '</PesoBruto>'
cXml += ' <Cubagem>' + '0' + '</Cubagem>'
cXml += ' <QtdeVolumes>' + CVALTOCHAR(TRC->C5_VOLUME1) + '</QtdeVolumes>'
cXml += ' <QtdeCaixas>' + '0' + '</QtdeCaixas>'
cXml += ' <Observacoes>' + TRC->C5_OBS + '</Observacoes>'
cXml += ' <Itens>'

SqlItens(TRC->C5_NUM)
While TRD->(!EOF())

//IncProc("Item PV: " + TRD->C6_PRODUTO + '||' + ALLTRIM(TRD->B1_DESC))


cXml += ' <ItemPedido>'
cXml += ' <Codigo>' + ALLTRIM(TRD->C6_PRODUTO) + '</Codigo>'
cXml += ' <Descricao>' + ALLTRIM(TRD->B1_DESC) + '</Descricao>'
cXml += ' <Unidade>' + ALLTRIM(TRD->C6_UM) + '</Unidade>'
cXml += ' <Quantidade>' + CVALTOCHAR(TRD->C6_QTDVEN) + '</Quantidade>'
cXml += ' <Cubagem>' + '0' + '</Cubagem>'
cXml += ' <PesoLiquido>' + CVALTOCHAR(TRD->C6_QTDVEN) + '</PesoLiquido>'
cXml += ' <PesoBruto>' + CVALTOCHAR(TRD->PESOBRUTO) + '</PesoBruto>'
cXml += ' <ValorUnitario>' + CVALTOCHAR(TRD->C6_PRCVEN) + '</ValorUnitario>'
cXml += ' </ItemPedido>'


TRD->(dbSkip())
ENDDO //FECHA WHILE DO TRE

TRD->(dbCloseArea())

cXml += ' </Itens>'

aRot := {}
AAdd(aRot,DTOC(STOD(TRC->C5_DTENTR)))
AAdd(aRot,TRC->C5_ROTEIRO)
AAdd(aRot,TRC->C5_NUM)
AAdd(aRots,aRot)

cXml += ' </Pedido>'

TRC->(dbSkip())

ENDDO //FECHA WHILE DO TRC
nLTRC := 0 // Zera o contador de linha do SQL TRC
TRC->(dbCloseArea())

cXml += ' </Pedidos>'
cXml += ' </ImportarPedidos>'
cXml += ' </soap:Body>'
cXml += '</soap:Envelope>'

IncProc("Enviando Pedidos para o WebService Ravex")

CONOUT("cXml: " + cXml)

// Envia a mensagem SOAP ao servidor
lRet := oWsdl:SendSoapMsg(cXml)

IF lRet == .F.

CONOUT("Erro cError: " + oWsdl:cError )
CONOUT("Erro cFaultCode: " + oWsdl:cFaultCode )
RETURN(NIL)

ENDIF

// Pega a mensagem de resposta
cRetWs := oWsdl:GetSoapResponse()

oXml := XmlParser(cRetWs, "_", @cError, @cWarning )

IF (oXml == NIL)

MsgStop("OLÁ " + Alltrim(cUserName) + CHR(13) + CHR(10) + ;
"Roteiro Inicial: " + MV_PAR03 + " Roteiro Final: " + MV_PAR04 + CHR(13) + CHR(10) + ;
"Com erro entre em contato com a T.I." + CHR(13) + CHR(10) + ;
"Msg Erro: " + cError, "ADLOG055P-03")

CONOUT(DToC(Date()) + " " + Time() + " Falha ao gerar Objeto XML : " + cError + " / " + cWarning)
RETURN(NIL)

ENDIF

IF Type('oXml:_SOAP_ENVELOPE:_SOAP_BODY:_NS1_SIMPLESTARTPROCESSRESPONSE:_RESULT:_ITEM[6]') <> "U"

cIdFluig := ALLTRIM(oXml:_SOAP_ENVELOPE:_SOAP_BODY:_NS1_SIMPLESTARTPROCESSRESPONSE:_RESULT:_ITEM[6]:TEXT)
cIdFluig := SUBSTR(cIdFluig,AT('=',cIdFluig) + 1,LEN(cIdFluig))
CONOUT( DToC(Date()) + " " + Time() + " ID FLUIG SALVO" )
/*
RECLOCK("SC7",.F.)

SC7->C7_XFLUIG := cIdFluig

MSUNLOCK()
*/
ELSE

MsgStop("OLÁ " + Alltrim(cUserName) + CHR(13) + CHR(10) + ;
"Roteiro Inicial: " + MV_PAR03 + " Roteiro Final: " + MV_PAR04 + CHR(13) + CHR(10) + ;
"Com erro entre em contato com a T.I." + CHR(13) + CHR(10) + ;
"Msg Erro: " + cError, "ADLOG055P-04")

CONOUT( DToC(Date()) + " " + Time() + " Não retornou a tag." )
RETURN(NIL)

ENDIF

IncProc("Processamento Finalizado")

RETURN(NIL)

STATIC FUNCTION MontaPerg()

Private bValid := NIL
Private cF3 := NIL
Private cSXG := NIL
Private cPyme := NIL

U_xPutSx1(cPerg,'01','Data Entrega de ?','','','mv_ch01','D',08,0,0,'G',bValid,cF3 ,cSXG,cPyme,'MV_PAR01')
U_xPutSx1(cPerg,'02','Data Entrega Ate ?','','','mv_ch02','D',08,0,0,'G',bValid,cF3 ,cSXG,cPyme,'MV_PAR02')
U_xPutSx1(cPerg,'03','Roteiro Ini de ?','','','mv_ch03','C',03,0,0,'G',bValid,cF3 ,cSXG,cPyme,'MV_PAR03')
U_xPutSx1(cPerg,'04','Roteiro Fin Ate ?','','','mv_ch04','C',03,0,0,'G',bValid,cF3 ,cSXG,cPyme,'MV_PAR04')

Pergunte(cPerg,.T.)

RETURN(NIL)

STATIC FUNCTION NoAcento2(cString)

Local cChar := ""
Local nX := 0
Local nY := 0
Local cVogal := "aeiouAEIOU"
Local cAgudo := "áéíóú"+"ÁÉÍÓÚ"
Local cCircu := "âêîôû"+"ÂÊÎÔÛ"
Local cTrema := "äëïöü"+"ÄËÏÖÜ"
Local cCrase := "àèìòù"+"ÀÈÌÒÙ"
Local cTio := "ãõÃÕ"
Local cCecid := "çÇ"
Local cMaior := "&lt;"
Local cMenor := "&gt;"

For nX:= 1 To Len(cString)
cChar:=SubStr(cString, nX, 1)
IF cChar$cAgudo+cCircu+cTrema+cCecid+cTio+cCrase
nY:= At(cChar,cAgudo)
If nY > 0
cString := StrTran(cString,cChar,SubStr(cVogal,nY,1))
EndIf
nY:= At(cChar,cCircu)
If nY > 0
cString := StrTran(cString,cChar,SubStr(cVogal,nY,1))
EndIf
nY:= At(cChar,cTrema)
If nY > 0
cString := StrTran(cString,cChar,SubStr(cVogal,nY,1))
EndIf
nY:= At(cChar,cCrase)
If nY > 0
cString := StrTran(cString,cChar,SubStr(cVogal,nY,1))
EndIf
nY:= At(cChar,cTio)
If nY > 0
cString := StrTran(cString,cChar,SubStr("aoAO",nY,1))
EndIf
nY:= At(cChar,cCecid)
If nY > 0
cString := StrTran(cString,cChar,SubStr("cC",nY,1))
EndIf
Endif
Next

If cMaior$ cString
cString := strTran( cString, cMaior, "" )
EndIf
If cMenor$ cString
cString := strTran( cString, cMenor, "" )
EndIf

cString := StrTran( cString, CRLF, " " )

For nX:=1 To Len(cString)
cChar:=SubStr(cString, nX, 1)
If (Asc(cChar) < 32 .Or. Asc(cChar) > 123) .and. !cChar $ '|'
cString:=StrTran(cString,cChar,".")
Endif
Next nX
//Especifico Adoro devido a erro XML não solucionado versao 3.10
cString := StrTran(cString,"&","e")

Return(cString)

STATIC FUNCTION SqlPedidos()

Local cDtIni := DTOS(MV_PAR01)
Local cDtFin := DTOS(MV_PAR02)

BeginSQL Alias "TRC"
%NoPARSER%
SELECT SC5.C5_NUM,
SC5.C5_FILIAL,
SC5.C5_EMISSAO,
SC5.C5_DTENTR,
SC5.C5_ROTEIRO,
SC5.C5_CLIENTE,
SC5.C5_LOJACLI,
SA1.A1_SATIV1,
SA1.A1_SATIV2,
SA1.A1_ENDENT,
SA1.A1_BAIRROE,
SA1.A1_MUNE,
SA1.A1_CEPE,
SA1.A1_IMPENT,
SA1.A1_END,
SA1.A1_BAIRRO,
SA1.A1_MUN,
SA1.A1_CEP,
SA1.A1_ESTE,
SA1.A1_EST,
SC5.C5_PBRUTO,
SC5.C5_PESOL,
SC5.C5_SEQUENC,
SC5.C5_XTOTPED,
SC5.C5_VOLUME1,
SA1.A1_CGC,
SA1.A1_XLATITU,
SA1.A1_XLONGIT,
SC5.C5_OBS
FROM %Table:SC5% SC5 /*WITH(NOLOCK) */
INNER JOIN %Table:SA1% SA1 /*WITH(NOLOCK)*/
ON A1_FILIAL = %EXP:FWXFILIAL('SA1')%
AND A1_COD = SC5.C5_CLIENTE
AND A1_LOJA = SC5.C5_LOJACLI
AND SA1.%notDel%
WHERE SC5.C5_FILIAL = %EXP:FWXFILIAL('SC5')%
AND SC5.C5_DTENTR >= %EXP:cDtIni%
AND SC5.C5_DTENTR <= %EXP:cDtFin%
AND SC5.C5_ROTEIRO >= %EXP:MV_PAR03%
AND SC5.C5_ROTEIRO <= %EXP:MV_PAR04%
AND SC5.C5_NOTA = ''
AND SC5.C5_SERIE = ''
AND SC5.%notDel%

ORDER BY SC5.C5_FILIAL,SC5.C5_DTENTR,SC5.C5_ROTEIRO,SC5.C5_NUM

EndSQl

RETURN(NIL)

STATIC FUNCTION SqlItens(cNum)

Local cWhere := ''

cWhere := '%' + cCFOP + '%'

BeginSQL Alias "TRD"
%NoPARSER%
SELECT C6_PRODUTO,
B1_DESC,
C6_UM,
C6_ENTREG,
C6_QTDVEN,
CASE WHEN (SELECT TOP(1) ZC_TARA FROM SZC010 WITH(NOLOCK) WHERE ZC_UNIDADE = C6_SEGUM) IS NOT NULL THEN (C6_UNSVEN * (SELECT TOP(1) ZC_TARA FROM SZC010 WITH(NOLOCK) WHERE ZC_UNIDADE = C6_SEGUM)) ELSE 0 END + C6_QTDVEN AS PESOBRUTO,
C6_UNSVEN,
C6_PRCVEN
FROM %TABLE:SC6%
INNER JOIN %TABLE:SB1% WITH(NOLOCK)
ON B1_FILIAL = ' '
AND B1_COD = C6_PRODUTO
AND SB1010.D_E_L_E_T_ <> '*'
WHERE C6_FILIAL = %EXP:FWXFILIAL('SC6')%
AND C6_NUM = %EXP:cNum%
//AND (C6_QTDVEN - C6_QTDENT) > 0
AND C6_CF NOT IN %EXP:cWhere%
AND SC6010.D_E_L_E_T_ <> '*'

ORDER BY C6_ITEM

EndSQl

RETURN(NIL)

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 10 meses atrás #32887 por danielruffino
Boa Tarde.

Will, conseguiu resolver esse erro?
Estou com o mesmo problema.

at.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.115 segundos
Joomla templates by a4joomla