quarta-feira, 13 de janeiro de 2016

HttpRequest + Envelope Soap










http://forum.pcsoft.fr/pt-BR/pcsoft.br.windev/121-httprequest-envelope-soap/read.awp


Assistir Video Windev Mobile - Webservice Revisando o codigo SOAP
Assistir Video Windev Mobile - Criando um Webservice usando SOAP medodo "Post"
Assistir Video Windev Mobile - Webservice Detalhes como consumir dados envio e retorno
Assistir Video Windev - Webservice Outro Exemplo e Testes em Querys
Assistir Video Windev - Webservice
Assistir Video Webdev - Webservice Configuração e Deploy
Assistir Video Webdev - Exemplo de aplicação Web by Paulo Viana
Webservice com SoapUi - Instalação e Exemplo de Uso
Windev Mobile - Criando um Webservice usando SOAP medodo "Post" (Envelope Xml)


http://zbra.com.br/2011/03/30/consumindo-web-service-em-aplicacoes-android/

http://windevdesenvolvimento.blogspot.com.br/2014/12/windev-webservice-soap.html

http://windevdesenvolvimento.blogspot.com.br/2015/01/windev-mobile-webservice-revisando-o.html

Ex07: Envelope SOAP
#####################################################
Code Button:
Procedure WS_Taxi_AtualizarCartoes(LOCAL DebugSN)

IF GloDebugSN = "S" THEN
Info("WS_Taxi_AtualizarCartoes")
DebugSN = "S"
END

ok is boolean = False

Contador is int = 0

bAtualizar is boolean = False

IpSaladaFruta01 is string = Morango_01 +"."+ Abacaxi_02 +"."+ Limao_03 +"."+ Melancia_04 +":"+ Laranja_05
IpSaladaFruta02 is string = Morango_01 +"."+ Abacaxi_02 +"."+ Limao_03 +"."+ Melancia_04 +":"+ Manga_06

ChangeCharset(charsetOccidental) // SEM ACENTO

//Busca Cliente
HReadSeekFirst(t001_cliente,t001_cliente.t001_seq_cliente,1)
IF HFound(t001_cliente) = True THEN

erro is int = 0
CodClienteCelula, nRetornoCodigo is int = 0
bRet is boolean = False
XML_Retorno, NumProces is string = ""

//Busca Cliente
HReadSeekFirst(t001_cliente,t001_cliente.t001_seq_cliente,1)
IF HFound(t001_cliente) = True THEN

//NumProcess

NumProces = WS_Taxi_ValidaRequisicao(t001_cliente.t001_ddd_telefone,...
t001_cliente.t001_num_telefone,...
0,...
0,...
"N")


//Envio
IF CodClienteCelula = "" OR CodClienteCelula = 0 THEN
CodClienteCelula = t001_cliente.t001_cod_clientecelula
END

//Envelope
Xml_SEND is string = [
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:act297_RtPlusSSDM-IRtPlusSSDM#AtualizarCartoes">
<soapenv:Header/>
<soapenv:Body>
<urn:AtualizarCartoes soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<cod_client_celula xsi:type="xsd:int">v001</cod_client_celula>
<dat_hora_proces xsi:type="xsd:string">v002</dat_hora_proces>
<num_proces xsi:type="xsd:int">v003</num_proces>
</urn:AtualizarCartoes>
</soapenv:Body>
</soapenv:Envelope>
]


//Replace
Xml_SEND = Replace(Xml_SEND,"v001",CodClienteCelula,IgnoreCase)
Xml_SEND = Replace(Xml_SEND,"v002",GloDataHora,IgnoreCase)
Xml_SEND = Replace(Xml_SEND,"v003",NumProces,IgnoreCase)

IF DebugSN = "S" THEN
Info("/mnt/sdcard/TaxiFv/Arquivos/EnvioCartoes.TXT", Xml_SEND)
IF InAndroidMode() = True
IF InSimulatorMode() = False
fSaveBuffer("/mnt/sdcard/TaxiFv/Arquivos/EnvioCartoes.TXT", Xml_SEND)
ELSE
fSaveBuffer("c:\EnvioCartoes.TXT", Xml_SEND)
END
END
END

HTTPTimeOut(GloHTTPTimeOut)

//BASE REAL

ok = HTTPRequest("http://"+IpSaladaFruta01+"/soap/IRtPlusSSDM","", "", Xml_SEND, "text/xml","","")

XML_Retorno = WS_Android_IOS_HTTPGetResult()

//Retorno Completo do webservice sem Tratamento
IF DebugSN = "S" THEN
Info("/mnt/sdcard/TaxiFv/Arquivos/RetornoCartoesSemTratamento.TXT", XML_Retorno)
IF InAndroidMode() = True
IF InSimulatorMode() = False
fSaveBuffer("/mnt/sdcard/TaxiFv/Arquivos/RetornoCartoesSemTratamento.TXT", XML_Retorno)
ELSE
fSaveBuffer("c:\RetornoCartoes.TXT", XML_Retorno)
END
END
END

//Retorno Completo do webservice com Tratamento
XML_Retorno = WS_RemoveAcentos(XML_Retorno)

//Ajuste do xml para ser lido
IF Length(XML_Retorno) > 0 THEN

Inicial is int = PositionOccurrence(XML_Retorno,"<NS2:TTipoFormaPagamentoVO",firstRank,FromBeginning)
Final is int = PositionOccurrence(XML_Retorno,"</NS2:TTipoFormaPagamentoVO>",lastRank,FromEnd) +Length("</NS2:TTipoFormaPagamentoVO>")
XML_Retorno = Middle(XML_Retorno,Inicial,Final - Inicial)
XML_Retorno = Replace(XML_Retorno,"NS2:TTipoFormaPagamentoVO","NoXml")
XML_Retorno = "<Xml><Recorte>"+XML_Retorno+"</Recorte></Xml>"

IF DebugSN = "S" THEN
Info("/mnt/sdcard/TaxiFv/Arquivos/RetornoCartoes.TXT", XML_Retorno)
IF InAndroidMode() = True
IF InSimulatorMode() = False
fSaveBuffer("/mnt/sdcard/TaxiFv/Arquivos/RetornoCartoes.TXT", XML_Retorno)
ELSE
fSaveBuffer("c:\RetornoCartoes.TXT", XML_Retorno)
END
END
END

IF Length(XML_Retorno) >0 THEN

HExecuteQuery(QRY_T004Cartoes_Del)
FOR EACH t004_cartoescreditos
HDelete(t004_cartoescreditos)
END

IF IniOSMode() = True THEN
/////////////////////////////////////////////////////////////

NoXml is string
i is int = 1

LOOP

NoXml = XMLExtractString(XML_Retorno,"NoXml",i)

IF NoXml = "" THEN
BREAK
END

DesFormaPagame is string = XMLExtractString(NoXml,"DesFormaPagame")
CodFormaPagame is string = XMLExtractString(NoXml,"CodFormaPagame")

IF DebugSN = "S"
Info("Cartao",CodFormaPagame,DesFormaPagame)
END


//Busca Cartao
HReadSeekFirst(t004_cartoescreditos,t004_cartoescreditos.NomeCartao004,DesFormaPagame)

IF HFound(t004_cartoescreditos) = False THEN

//Adicionando a leitura do xml no banco de dados
t004_cartoescreditos.CodigoCartao004 = CodFormaPagame
IF t004_cartoescreditos.CodigoCartao004 = 0 THEN
Contador += 1
t004_cartoescreditos.CodigoCartao004 = Contador
END
t004_cartoescreditos.NomeCartao004 = DesFormaPagame
t004_cartoescreditos.DataAtualizacao004 = DateSys()

IF DebugSN = "S" THEN
Info("tabela",t004_cartoescreditos.CodigoCartao004,t004_cartoescreditos.NomeCartao004)
END
//Arquiva resultado
ok = HAdd(t004_cartoescreditos)
IF ok = False THEN
//conta erros
erro += 1
ELSE
IF DebugSN = "S" THEN
Info("Adicionado com sucesso")
END
END

END
i++
END

ELSE IF InAndroidMode() = True
/////////////////////////////////////////////////////////////

XmlDoc is XMLDocument

XmlDoc = XMLOpen(XML_Retorno, fromString)

NoXml is xmlNode

//Leitura do xml em loop
FOR EACH NoXml OF XmlDoc.Xml.Recorte on NoXml

IF DebugSN = "S"
Info("Cartao",NoXml.CodFormaPagame,NoXml.DesFormaPagame)
END
//Busca Cartao
HReadSeekFirst(t004_cartoescreditos,t004_cartoescreditos.NomeCartao004,NoXml.DesFormaPagame)

IF HFound(t004_cartoescreditos) = False THEN

//Adicionando a leitura do xml no banco de dados
t004_cartoescreditos.CodigoCartao004 = NoXml.CodFormaPagame
IF t004_cartoescreditos.CodigoCartao004 = 0 THEN
Contador += 1
t004_cartoescreditos.CodigoCartao004 = Contador
END
t004_cartoescreditos.NomeCartao004 = NoXml.DesFormaPagame
t004_cartoescreditos.DataAtualizacao004 = DateSys()

IF DebugSN = "S" THEN
Info("tabela",t004_cartoescreditos.CodigoCartao004,t004_cartoescreditos.NomeCartao004)
END
//Arquiva resultado
ok = HAdd(t004_cartoescreditos)
IF ok = False THEN
//conta erros
erro += 1
ELSE
IF DebugSN = "S" THEN
Info("Adicionado com sucesso")
END
END

END
END


END

//Verifica quantos erros ocorreram se for maior que zero é falso o retorno
IF erro > 0 THEN
ok = False
ELSE
ok = True
END
//

END

END

END//

END


RESULT(ok)


////LEITURA E GRAVACAO
////=========================================================
//FOR EACH t004_cartoescreditos
//IF t004_cartoescreditos.CodigoCartao004 > 0 THEN
//Contador += 1
//END
//END
//IF Contador = 0 THEN
//
//t004_cartoescreditos.CodigoCartao004 = 1
//t004_cartoescreditos.NomeCartao004 = "VISA"
//t004_cartoescreditos.DataAtualizacao004 = DateSys()
//HAdd(t004_cartoescreditos)
//
//t004_cartoescreditos.CodigoCartao004 = 2
//t004_cartoescreditos.NomeCartao004 = "MASTER"
//t004_cartoescreditos.DataAtualizacao004 = DateSys()
//HAdd(t004_cartoescreditos)
//
//t004_cartoescreditos.CodigoCartao004 = 4
//t004_cartoescreditos.NomeCartao004 = "HIPERCARD"
//t004_cartoescreditos.DataAtualizacao004 = DateSys()
//HAdd(t004_cartoescreditos)
//
//t004_cartoescreditos.CodigoCartao004 = 5
//t004_cartoescreditos.NomeCartao004 = "AMERICAN"
//t004_cartoescreditos.DataAtualizacao004 = DateSys()
//HAdd(t004_cartoescreditos)
//
//t004_cartoescreditos.CodigoCartao004 = 6
//t004_cartoescreditos.NomeCartao004 = "SENFF"
//t004_cartoescreditos.DataAtualizacao004 = DateSys()
//HAdd(t004_cartoescreditos)
//
//t004_cartoescreditos.CodigoCartao004 = 7
//t004_cartoescreditos.NomeCartao004 = "ELO"
//t004_cartoescreditos.DataAtualizacao004 = DateSys()
//HAdd(t004_cartoescreditos)
//END









APOSTILA FREE DE WINDEV








Forum Geswind - Windev


http://www.pedrosoinformatica.com.br/windev/apwindev1.pdf

http://www.pedrosoinformatica.com.br/windev/apwindev2.pdf

http://www.pedrosoinformatica.com.br/


Pedrosão
Fomos os primeiros a desenvolver uma documentação em português para o Windev quando trabalhávamos na empresa TOPSIDE INFORMATICA, no Rio Grande do sul.
Abaixo os links para download destas apostias. Embora sejam da versão 7, servem como ponto de partida para quem está começando.
http://www.pedrosoinformatica.com.br/windev/apwindev1.pdf
http://www.pedrosoinformatica.com.br/windev/apwindev2.pdf





Teste

Teste
teste