PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 25 → WX - Consumindo um Webservice com httpResponse, envelope soap, header soap usando post
WX - Consumindo um Webservice com httpResponse, envelope soap, header soap usando post
Iniciado por BOLLER, 24,oct. 2017 21:43 - 6 respuestas
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 24,octubre 2017 - 21:43
//EXEMPLO
PROCEDURE WS_Login(Empresa, Matricula, Senha)

sUserId, sCPF, sUrl, sNome, sFilial, sSaldo is string

sXML is string = StringBuild("<?xml version=""1.0"" encoding=""utf-8""?>" +
"<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" +
"<soap:Body><Login xmlns=""wxinformatica"">" +
"<ent><UserId>0</UserId><IMEI>1234567890</IMEI><latitude>0</latitude><longitude>0</longitude><AccessToken></AccessToken><device><marca>Samsung</marca><modelo>S8+</modelo><versao>7.1.1</versao><resWidth>1920</resWidth><resHeight>1080</resHeight></device></ent>" +
"<empresa>@EMPRESA@</empresa><matricula>@MATRICULA@</matricula><senha>@SENHA@</senha>" +
"</Login></soap:Body></soap:Envelope>")


sXML = Replace(sXML,"@EMPRESA@",empresa)
sXML = Replace(sXML,"@MATRICULA@",matricula)
sXML = Replace(sXML,"@SENHA@",senha)

xDoc is xmlDocument = XMLOpen(sXML,fromString)

req is httpRequest

req..URL = "https://wxinformatica.com.br/ws.asmx"
req.Header["SOAPAction"] = "wxinformatica/Login"
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)"
req.Method = httpPost,
req.ContentType = "text/xml; charset=utf-8"

req.Content = XMLBuildString(xDoc) // muito importante manter essa linha

cMyResponse is httpResponse = HTTPSend(req)

IF ErrorOccurred THEN

Error(ErrorInfo(errFullDetails))

ELSE

xDoc = XMLOpen(cMyResponse..Content,fromString)

sUserId = xDoc..NoeudRacine[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[1]
sCPF = xDoc..NoeudRacine[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[2]
sUrl = xDoc..NoeudRacine[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[3]
sNome = xDoc..NoeudRacine[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[4]
sFilial = xDoc..NoeudRacine[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[5]
sSaldo = xDoc..NoeudRacine[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[1]..NoeudFils[6]

Info(sUserId, sCPF, sUrl, sNome, sFilial, sSaldo)

END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensaje modificado, 24,octubre 2017 - 21:47
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 25,octubre 2017 - 00:42
Atenção:

Level 22 ou acima vem com suporte a TLS 2.1 // Protocolo seguro nao foi implementado nas versoes antigas dos celulares.

O Lollipop é API 21 do Android SDK.

Ou seja, abaixo da versão 6 do android, deve ser http a url do webservice e se for igual ou superior a 6 do android do celular pode usar https no endereço do webservice. Assim você consegue com http usar até com a versao 4.0 em diante.

Digamos um endereço assim:

http://wxinformatica.com/ws.asmx… do webservice funciona da 4.0 em diante

e

https://wxinformatica.com/ws.asmx… do webservice funciona da 6.0 em diante

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 14,enero 2021 - 00:04
Solução 100%

//Aqui define o layout do XML a ser enviado pelo POST

sXDoc is string = [





?

?
?
?


?
?
?
?
?
?

?
?
?



?
?
?
?
?
?
?
?
?


?


@LACRE@





]

//Exemplo de como substituir parte do XML inicial por variáveis

sLacre is string = "?"

sXDoc = Replace(sXDoc,"@LACRE@",sLacre)

//webservice
req is httpRequest

req.URL = "http://servidor.cliente.com.br:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=BS_CONCEITTO_D&receiverParty=&receiverService=&interface=SI_AtualizaOrdemFrete_Out&interfaceNamespace=urn:enderecodocliente:TMAtualizaOrdemFrete"
req.User = "TESTE"
req.Password = "1234"
req.Header["SOAPAction"] = "Conceitto/Login"
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)"
req.Method = httpPost
req.ContentType = "text/xml; charset=utf-8"

req.Content = sXDoc

cMyResponse is httpResponse = HTTPSend(req)

IF ErrorOccurred THEN
Error(ErrorInfo(errFullDetails))
ELSE
sXDoc = cMyResponse..Content
Info(sXDoc)
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 14,enero 2021 - 00:05
Solução 100%

//Aqui define o layout do XML a ser enviado pelo POST

sXDoc is string = [
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:enderecodocliente:TMAtualizaOrdemFrete">
<soapenv:Header/>
<soapenv:Body>
<urn:MT_AtualizaOrdemFrete_Req_Conc>
<ordem>
<nr_ordem>?</nr_ordem>
<dados_pesagem>
<tara_veiculo>?</tara_veiculo>
<peso_bruto>?</peso_bruto>
<peso_liquido_real>?</peso_liquido_real>
</dados_pesagem>
<inf_item>
<id_etapa>?</id_etapa>
<nr_remessa>?</nr_remessa>
<item_remessa>?</item_remessa>
<id_material>?</id_material>
<quantidade>?</quantidade>
<unidade_med_qtde>?</unidade_med_qtde>
<inf_lote>
<lote>?</lote>
<qtde>?</qtde>
<unidade_lote>?</unidade_lote>
</inf_lote>
</inf_item>
<dados_analise>
<temperatura_tanque>?</temperatura_tanque>
<ap_veiculo_seta>?</ap_veiculo_seta>
<massa_especifica>?</massa_especifica>
<fator_reducao_vol>?</fator_reducao_vol>
<alcalinidade>?</alcalinidade>
<volume_20>?</volume_20>
<acidez_total>?</acidez_total>
<grau_inpm>?</grau_inpm>
<aspecto>?</aspecto>
</dados_analise>
<checklist>
<id_checklist>?</id_checklist>
</checklist>
<lacres>
@LACRE@
</lacres>
</ordem>
</urn:MT_AtualizaOrdemFrete_Req_Conc>
</soapenv:Body>
</soapenv:Envelope>
]

//Exemplo de como substituir parte do XML inicial por variáveis

sLacre is string = "<lacre>?</lacre>"

sXDoc = Replace(sXDoc,"@LACRE@",sLacre)

//webservice
req is httpRequest

req.URL = "http://servidor.cliente.com.br:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=BS_CONCEITTO_D&receiverParty=&receiverService=&interface=SI_AtualizaOrdemFrete_Out&interfaceNamespace=urn:enderecodocliente:TMAtualizaOrdemFrete"
req.User = "TESTE"
req.Password = "1234"
req.Header["SOAPAction"] = "Conceitto/Login"
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)"
req.Method = httpPost
req.ContentType = "text/xml; charset=utf-8"

req.Content = sXDoc

cMyResponse is httpResponse = HTTPSend(req)

IF ErrorOccurred THEN
Error(ErrorInfo(errFullDetails))
ELSE
sXDoc = cMyResponse..Content
Info(sXDoc)
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 11,agosto 2021 - 16:07
Bom dia

Baseado no código do Adriano, fiz o Soap, peguei a definição do xml do WSDL , que deve ser esta mesmo e aí foi de boa !

by Ricardo Cassolato

SuhaiXml is string = [




[%Login%]
[%senha%]
[%STCliente.cliente_cpf_cnpj%]
[%STCliente.cliente_nome%]
[%DateToString(STCliente.cliente_data_nascimento,"YYYY-MM-DD")%]
[%sexo_suhai%]
[%sCep%]
[%estado_civil_suhai%]
[%gsVEICULO_MARCA%]
[%gsVEICULO_MODELO%]
string
[%gsANO_MODELO%]
[%gsANO_MODELO%]
[%gsCarroZero%]
[%STSuhaiPerguntas.UtilizacaoDut%]
[%STSuhaiPerguntas.tipoUtilizacao%]
1
1
tab 5
0
[%condutor_cpf_cnpj%]
[%condutor_nome%]
[%DateToString(condutor_data_nascimento,"YYYY-MM-DD")%]
[%sexocondutor_suhai%]
[%estado_civilcondutor_suhai%]
[%STSuhaiPerguntas.Pergunta1%]
[%STSuhaiPerguntas.Pergunta2%]
[%STSuhaiPerguntas.Pergunta3%]
[%STSuhaiPerguntas.Pergunta4%]
7
[%sCodCobertura %]




]

//executa envelope

MyRequest is httpRequest
MyRequest..URL = sUrl
MyRequest..Header["SOAPAction"] = "http://suhaiseguradoracotacao.com.br:5155/IncluirCotacaoSuhai"
MyRequest..Method = httpPost
MyRequest..ContentType = "text/xml; charset=utf-8"
MyRequest..Content = SuhaiXml
MyResponse is httpResponse = HTTPSend(MyRequest)

//===============================================
IF ErrorOccurred THEN
Error(ErrorInfo(errFullDetails))
END
//===============================================

GravaLog("SuhaiXml"+sCodCobertura+".xml",SuhaiXml)
GravaLog("SuhaiXmlResponse"+sCodCobertura+".xml",MyResponse..Content)

//funcionou perfeitamente


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 11,agosto 2021 - 21:14
SuhaiXml is string = [
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<IncluirCotacaoSuhai xmlns="http://suhaiseguradoracotacao.com.br:5155/">
<cotacao>
<Login>[%Login%]</Login>
<senha>[%senha%]</senha>
<cpfCnpj>[%STCliente.cliente_cpf_cnpj%]</cpfCnpj>
<nome>[%STCliente.cliente_nome%]</nome>
<dtNascimento>[%DateToString(STCliente.cliente_data_nascimento,"YYYY-MM-DD")%]</dtNascimento>
<sexo>[%sexo_suhai%]</sexo>
<cepPernoite>[%sCep%]</cepPernoite>
<estadoCivil>[%estado_civil_suhai%]</estadoCivil>
<Marca>[%gsVEICULO_MARCA%]</Marca>
<Modelo>[%gsVEICULO_MODELO%]</Modelo>
<codFipe>string</codFipe>
<anomodelo>[%gsANO_MODELO%]</anomodelo>
<anoFabricacao>[%gsANO_MODELO%]</anoFabricacao>
<zeroKm>[%gsCarroZero%]</zeroKm>
<utilizacaoDut>[%STSuhaiPerguntas.UtilizacaoDut%]</utilizacaoDut>
<tipoUtilizacao>[%STSuhaiPerguntas.tipoUtilizacao%]</tipoUtilizacao>
<possuiOutroVeic>1</possuiOutroVeic>
<tipoContratacao>1</tipoContratacao>
<tabelaComissao>tab 5</tabelaComissao>
<classeBonus>0</classeBonus>
<cpfCnpjPrincipalCondutor>[%condutor_cpf_cnpj%]</cpfCnpjPrincipalCondutor>
<nomePrincipalCondutor>[%condutor_nome%]</nomePrincipalCondutor>
<dtNascimentoPrincipalCondutor>[%DateToString(condutor_data_nascimento,"YYYY-MM-DD")%]</dtNascimentoPrincipalCondutor>
<sexoPrincipalCondutor>[%sexocondutor_suhai%]</sexoPrincipalCondutor>
<estadoCivilPrincipalCondutor>[%estado_civilcondutor_suhai%]</estadoCivilPrincipalCondutor>
<pergunta1>[%STSuhaiPerguntas.Pergunta1%]</pergunta1>
<pergunta2>[%STSuhaiPerguntas.Pergunta2%]</pergunta2>
<pergunta3>[%STSuhaiPerguntas.Pergunta3%]</pergunta3>
<pergunta4>[%STSuhaiPerguntas.Pergunta4%]</pergunta4>
<vlr_desconto>7</vlr_desconto>
<cdCobertura>[%sCodCobertura %]</cdCobertura>
</cotacao>
</IncluirCotacaoSuhai>
</soap:Body>
</soap:Envelope>
]


MyRequest is httpRequest
MyRequest..URL = sUrl
MyRequest..Header["SOAPAction"] = "http://suhaiseguradoracotacao.com.br:5155/IncluirCotacaoSuhai"
MyRequest..Method = httpPost
MyRequest..ContentType = "text/xml; charset=utf-8"
MyRequest..Content = SuhaiXml


MyResponse is httpResponse = HTTPSend(MyRequest)


//===============================================
IF ErrorOccurred THEN
Error(ErrorInfo(errFullDetails))
END
//===============================================

GravaLog("SuhaiXml"+sCodCobertura+".xml",SuhaiXml)
GravaLog("SuhaiXmlResponse"+sCodCobertura+".xml",MyResponse..Content)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 11,agosto 2021 - 21:27
https://repository.windev.com/resource.awp?file_id=281474976711176;exemplo-consumindo-soap-wsdl-via-codigo-ricardo-cassolato


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/