|
Accueil → WINDEV 25 → WB - WEBDEV - Webservice Funções Internas para auxilizar a criação de XML |
WB - WEBDEV - Webservice Funções Internas para auxilizar a criação de XML |
Débuté par adrianoboller, 02 sep. 2015 16:13 - 39 réponses |
| |
| | | |
|
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:13 |
Procedure ws_conexao_falha(Tabela)
Servidor is string = ConnNativa..Server
Resultado is string = "" Resultado = "<Xml><Retorno>" Resultado += "<"+ NoSpace(Tabela) +" id="+Charact(34)+0+Charact(34)+">" Resultado += "<Erro>ERRO DE CONEXAO COM O BANCO</Erro>" Resultado += "<Banco>"+Servidor+"</Banco>" Resultado += "</"+ NoSpace(Tabela) +">" Resultado += "</Retorno></Xml>"
ws_a_log(Tabela,"MOBILE",HErrorInfo() +" - "+ ErrorInfo())
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:14 |
Procedure ws_conexao_sucesso(Tabela)
Servidor is string = ConnNativa..Server
Resultado is string = "" Resultado += "<"+ NoSpace(Tabela) +" id="+Charact(34)+1+Charact(34)+">" Resultado += "<OK>CONEXAO COM SUCESSO AO BANCO!!!!!!</OK>" Resultado += "<Banco>"+Servidor+"</Banco>" Resultado += "</"+ NoSpace(Tabela) +">" Resultado += "<TOTAL>1</TOTAL>"
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:14 |
Procedure ws_deletou(Tabela)
Resultado is string = "" Resultado = "<Xml><Retorno>" Resultado += "<"+ NoSpace(Tabela) +" id="+Charact(34)+0+Charact(34)+">" Resultado += "<OK>Deletou com Sucesso!</OK>" Resultado += "</"+ NoSpace(Tabela) +">" Resultado += "<TOTAL>1</TOTAL>" Resultado += "</Retorno></Xml>"
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:14 |
Procedure ws_erro_acesso_tabela(Tabela)
Resultado is string = "" Resultado = "<Xml><Retorno>" Resultado += "<"+ NoSpace(Tabela) +" id="+Charact(34)+0+Charact(34)+">" Resultado += "<Erro>ERRO DE ACESSO A TABELA: "+ NoSpace(Tabela) + "</Erro>" Resultado += "</"+ NoSpace(Tabela) +">" Resultado += "<TOTAL>0</TOTAL>" Resultado += "</Retorno></Xml>"
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:15 |
Procedure ws_a_log(Token, Aplicativo, Metodo)
ok is boolean = False
dsQryLog is Data Source
sDataHoraServidor is string = ""
SqlExecutar is string = [ INSERT INTO Webservice_Log ( DataHora, Token, Aplicativo, Metodo ) VALUES ( getdate(), '@Token@', '@Aplicativo@', '@Metodo@' ) ]
Metodo = WebserviceClientIPAddress() + " => " + Metodo SqlExecutar = Replace(SqlExecutar,"@Token@",Token) SqlExecutar = Replace(SqlExecutar,"@Aplicativo@",Aplicativo) SqlExecutar = Replace(SqlExecutar,"@Metodo@",Metodo)
ok = HExecuteSQLQuery(dsQryLog, ConnNativa, hQueryWithoutCorrection,SqlExecutar)
RESULT (ok) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:15 |
Procedure ws_erro_token(Tabela)
Resultado is string = ""
Resultado = "<Xml><Retorno>" Resultado += "<"+ NoSpace(Tabela) +" id="+Charact(34)+0+Charact(34)+">" Resultado += "<Erro>ERRO TOKEN</Erro>" Resultado += "</"+ NoSpace(Tabela) +">" Resultado += "<TOTAL>0</TOTAL>" Resultado += "</Retorno></Xml>"
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:16 |
Procedure ws_gravou(Tabela)
Resultado is string = "" Resultado = "<Xml><Retorno>" Resultado += "<"+ NoSpace(Tabela) +" id="+Charact(34)+0+Charact(34)+">" Resultado += "<OK>Gravou com Sucesso!</OK>" Resultado += "</"+ NoSpace(Tabela) +">" Resultado += "<TOTAL>1</TOTAL>" Resultado += "</Retorno></Xml>"
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:16 |
Procedure ws_msg_retorno(Mensagem)
Resultado is string = "" Resultado = "<Xml><Retorno>" Resultado += "<NoXml id="+Charact(34)+1+Charact(34)+">" Resultado += "<OK>" + Mensagem + "</OK>" Resultado += "</NoXml>" Resultado += "<TOTAL>1</TOTAL>" Resultado += "</Retorno></Xml>"
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:17 |
Procedure ws_nao_deletou(Tabela)
Resultado is string = "" Resultado = "<Xml><Retorno>" Resultado += "<"+ NoSpace(Tabela) +" id="+Charact(34)+0+Charact(34)+">" Resultado += "<Erro>NAO DELETOU!</Erro>" Resultado += "</"+ NoSpace(Tabela) +">" Resultado += "<TOTAL>0</TOTAL>" Resultado += "</Retorno></Xml>"
ws_a_log("Msg","MOBILE",HErrorInfo() +" - "+ ErrorInfo())
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:17 |
Procedure ws_nao_gravou(Tabela)
Resultado is string = "" Resultado = "<Xml><Retorno>" Resultado += "<"+ NoSpace(Tabela) +" id="+Charact(34)+0+Charact(34)+">" Resultado += "<Erro>NAO GRAVOU!</Erro>" Resultado += "</"+ NoSpace(Tabela) +">" Resultado += "<TOTAL>0</TOTAL>" Resultado += "</Retorno></Xml>"
ws_a_log("Msg","MOBILE",HErrorInfo() +" - "+ ErrorInfo())
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:17 |
Procedure ws_parametros_invalidos(Tabela)
Resultado is string = ""
Resultado = "<Xml><Retorno>" Resultado += "<NoXml id="+Charact(34)+0+Charact(34)+">" Resultado += "<Erro>PARAMETROS INVALIDOS OU CLIENTE BLOQUEADO: " + Tabela +HErrorInfo()+ErrorInfo()+"</Erro>" Resultado += "</NoXml>" Resultado += "<TOTAL>0</TOTAL>" Resultado += "</Retorno></Xml>"
ws_a_log(Tabela,"MOBILE",HErrorInfo() +" - "+ ErrorInfo())
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:17 |
Procedure ws_retorno(Tabela, NomeCampo, Retorno)
Resultado is string = ""
IF Retorno <> "" Resultado = "<Xml><Retorno>" Resultado += "<"+ NoSpace(Tabela) +" id="+Charact(34)+1+Charact(34)+">" Resultado += "<"+NomeCampo+">"+Retorno+"</"+NomeCampo+">" Resultado += "</"+ NoSpace(Tabela) +">" Resultado += "<TOTAL>1</TOTAL>" Resultado += "</Retorno></Xml>" END
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:18 |
Procedure ws_token_invalido(Tabela)
Resultado is string = "" Resultado = "<Xml><Retorno>" Resultado += "<"+ NoSpace(Tabela) +" id="+Charact(34)+0+Charact(34)+">" Resultado += "<Erro>TOQUEM INVALIDO OU NAO INFORMADO</Erro>" Resultado += "</"+ NoSpace(Tabela) +">" Resultado += "<TOTAL>0</TOTAL>" Resultado += "</Retorno></Xml>"
ws_a_log("Msg","MOBILE",HErrorInfo() +" - "+ ErrorInfo())
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:18 |
Procedure ws_xml_registro_comeco(Tabela, id)
Resultado is string = "" Resultado = "<"+ NoSpace(Tabela) +" id="+Charact(34)+ NoSpace(id) +Charact(34)+">" RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:19 |
Procedure ws_xml_registro_corpo(TabelaCampo, Campo)
Resultado is string = "" Resultado = "<"+ NoSpace(Campo) +">" + NoSpace(TabelaCampo) + "</"+ NoSpace(Campo) +">"
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:19 |
Procedure ws_xml_registro_final(Tabela)
Resultado is string = "" Resultado = "</"+ NoSpace(Tabela) +">"
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:19 |
Procedure ws_zero_registros(Tabela)
Resultado is string = ""
Resultado += "<"+ NoSpace(Tabela) +" id="+Charact(34)+0+Charact(34)+">" Resultado += "<Erro>NENHUM REGISTRO! "+ HErrorInfo() +" - "+ ErrorInfo() +" </Erro>" Resultado += "</"+ NoSpace(Tabela) +">"
ws_a_log("Msg","MOBILE",HErrorInfo() +" - "+ ErrorInfo())
RESULT(Resultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:22 |
Procedure ws_token_novo(Token, DDD_Telefone, Acao, Metodo)
ok, TokenOk is boolean = False Resultado is string = ""
HReadSeekFirst(WS_Token,WS_Token.Token,Token,hKeepFilter) IF HFound(WS_Token) = True AND WS_Token.Token = Token AND WS_Token.Situacao = "A" AND WS_Token.Telefone_IMEI = DDD_Telefone THEN TokenOk = True WS_Token.DataUltimoAcesso = DateSys() ok = HModify(WS_Token) IF ok = False THEN Resultado = ws_erro_acesso_tabela("WS_Token") RESULT(Resultado) END ELSE TokenOk = False WS_Tentativas.TentativaAcesso = DateSys() WS_Tentativas.Token = Token WS_Tentativas.Metodo = Metodo WS_Tentativas.Acao = Acao WS_Tentativas.Telefone_IMEI = DDD_Telefone ok = HAdd(WS_Tentativas) IF ok = False THEN Resultado = ws_erro_acesso_tabela("WS_Tentativas") RESULT(Resultado) END END
RESULT(TokenOk) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:23 |
Procedure ReplaceNull(Texto, Busca, Troca)
IF Texto <> "" AND Busca <> "" IF Troca <> "" AND PositionOccurrence(Texto,"'"+ Busca +"'",firstRank,FromBeginning) > 0 Texto = Replace(Texto, "'"+ Busca +"'", "'"+ Troca +"'") ELSE IF Troca <> "" AND PositionOccurrence(Texto, Busca, firstRank,FromBeginning) > 0 Texto = Replace(Texto, Busca, Troca) ELSE IF Troca = "" AND PositionOccurrence(Texto,"'"+ Busca +"'",firstRank,FromBeginning) > 0 Texto = Replace(Texto, "'"+ Busca +"'", "null") ELSE IF Troca = "" AND PositionOccurrence(Texto, Busca, firstRank,FromBeginning) > 0 Texto = Replace(Texto ,Busca, "null") END END
RESULT(Texto) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:24 |
Procedure ws_verifica_conexao()
x is int = 0
Resultado is string = ""
arrResultado is array of string
ArrayDeleteAll(arrResultado)
dsQryDataHora is Data Source
DataHoraServidor is string = ""
OkConn is boolean = False
OkConn = HOpenConnection(ConnNativa)
IF OkConn = True
ok is boolean = HExecuteSQLQuery(dsQryDataHora, ConnNativa, hQueryWithoutCorrection,"Select CURRENT_TIMESTAMP as datahoraatual") IF ok = True THEN FOR EACH dsQryDataHora DataHoraServidor = dsQryDataHora.datahoraatual END END
END
IF OkConn = True THEN Resultado = "<Xml><Retorno>"
Resultado += "<AbriuConnexao>" + OkConn + "</AbriuConnexao>"
Resultado += ws_conexao_sucesso("Tabelas")
Resultado += "<SeuIP>" + NetIPAddress() + "</SeuIP>"
Resultado += "<ListaIP>" + NetListIPAddress() + "</ListaIP>"
Resultado += "<ListaIP>" + WebserviceClientIPAddress() + "</ListaIP>"
Resultado += "<FechouConnexao>" + OkConn + "</FechouConnexao>"
Resultado += "</Retorno></Xml>" ELSE Resultado = ws_conexao_falha("TesteConexao") END
OkConn = HCloseConnection(ConnNativa)
ArrayAdd(arrResultado,Resultado)
RESULT (arrResultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:24 |
Procedure ws_verifica_datahora_servidor(Token, Telefone_Imei, Acao, DataHoraMobile)
Q is int = 0
Resultado is string = ""
arrResultado is array of string
ArrayDeleteAll(arrResultado)
ok, DataHoraValida, OkConn, TokenOk is boolean = False
dsQryDataHora is Data Source
DataHoraServidor is string = ""
Metodo is string = "ws_verifica_datahora_servidor"
Tabela is string = "Temp"
OkConn = HOpenConnection(ConnNativa)
DataHoraServidorMaior, DataHoraServidorMenor, DataHoraMobileCompara is DateTime
TokenOk = ws_token(Token,Telefone_Imei,Acao,Metodo)
IF TokenOk = False THEN
Resultado = ws_erro_token(Tabela) Msg is string = Metodo +";"+ Resultado ws_a_log(Token +" "+ Tabela,"MOBILE",Msg)
ELSE
Comando is string = Metodo +";"+ Acao +";"+ DataHoraMobile ws_a_log(Token +" "+ Tabela,"MOBILE",Comando)
IF TokenOk = True AND OkConn = True AND DataHoraMobile <> "" AND DataHoraMobile <> Null THEN
ok = HExecuteSQLQuery(dsQryDataHora, ConnNativa, hQueryWithoutCorrection,"Select CURRENT_TIMESTAMP as datahoraatual") IF ok = True THEN FOR EACH dsQryDataHora DataHoraServidor = dsQryDataHora.datahoraatual END END
IF Length(DataHoraMobile) < 17 THEN Q = 17 - Length(DataHoraMobile) DataHoraMobile = DataHoraMobile + RepeatString("0", Q) END IF Length(DataHoraServidor) < 17 THEN Q = 17 - Length(DataHoraServidor) DataHoraServidor = DataHoraServidor + RepeatString("0", Q) END
DataHoraServidorMaior..Year = Middle(DataHoraServidor,01,04) DataHoraServidorMaior..Month = Middle(DataHoraServidor,05,02) DataHoraServidorMaior..Day = Middle(DataHoraServidor,07,02) DataHoraServidorMaior..Hour = Middle(DataHoraServidor,09,02) DataHoraServidorMaior..Minute = Middle(DataHoraServidor,11,02) DataHoraServidorMaior..Minute += 30
DataHoraServidorMenor..Year = Middle(DataHoraServidor,01,04) DataHoraServidorMenor..Month = Middle(DataHoraServidor,05,02) DataHoraServidorMenor..Day = Middle(DataHoraServidor,07,02) DataHoraServidorMenor..Hour = Middle(DataHoraServidor,09,02) DataHoraServidorMenor..Minute = Middle(DataHoraServidor,11,02) DataHoraServidorMenor..Minute -= 30
DataHoraMobileCompara..Year = Middle(DataHoraMobile,01,04) DataHoraMobileCompara..Month = Middle(DataHoraMobile,05,02) DataHoraMobileCompara..Day = Middle(DataHoraMobile,07,02) DataHoraMobileCompara..Hour = Middle(DataHoraMobile,09,02) DataHoraMobileCompara..Minute = Middle(DataHoraMobile,11,02)
IF Val(DataHoraMobileCompara) >= Val(DataHoraServidorMaior) OR Val(DataHoraMobileCompara) <= Val(DataHoraServidorMenor) THEN DataHoraValida = False ELSE DataHoraValida = True END
END
IF OkConn = True THEN
Resultado = "<Xml><Retorno>"
Resultado += "<AbriuConnexao>" + OkConn + "</AbriuConnexao>"
Resultado += "<DataHoraServidor>" + DataHoraServidor + "</DataHoraServidor>"
Resultado += "<DataHoraValida>" + DataHoraValida + "</DataHoraValida>"
Resultado += "<SeuIP>" + NetIPAddress() + "</SeuIP>"
Resultado += "<ListaIP>" + NetListIPAddress() + "</ListaIP>"
Resultado += "<ListaIP>" + WebserviceClientIPAddress() + "</ListaIP>"
Resultado += ws_conexao_sucesso("Tabelas")
Resultado += "<FechouConnexao>" + OkConn + "</FechouConnexao>"
Resultado += "</Retorno></Xml>"
ELSE
Resultado = ws_conexao_falha("VerificaDataHoraServidor")
END
OkConn = HCloseConnection(ConnNativa)
END
ArrayAdd(arrResultado,Resultado)
RESULT (arrResultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:25 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:25 |
Procedure ws_bairros_select(Token, Telefone_Imei, Acao)
X is int = 0
Resultado is string = "" arrResultado is array of string ArrayDeleteAll(arrResultado)
TokenOk is boolean = False Metodo is string = "ws_bairros_select" No_Xml is string = "NoXml"
IF Token <> "" THEN
OkConn is boolean = False
OkConn = HConnectionOpen(ConnNativa)
IF OkConn = False THEN
Resultado = ws_conexao_falha(No_Xml)
ELSE
TokenOk = ws_token(Token,Telefone_Imei,Acao,Metodo)
IF TokenOk = False THEN
Resultado = ws_erro_token(No_Xml) Msg is string = Metodo +";"+ Resultado ws_a_log(Token,"MOBILE",Msg)
ELSE
Comando is string = Metodo +";"+ Acao ws_a_log(Token,"MOBILE",Comando)
END
IF TokenOk = True AND Upper(Acao) = "SELECT"
ok is boolean = HExecuteQuery(QRY_Select_Bairros,hQueryDefault)
Resultado = "<Xml><Retorno>"
IF ok = True
FOR EACH QRY_Select_Bairros
X += 1
Resultado += ws_xml_registro_comeco(No_Xml, X)
Resultado += ws_xml_registro_corpo(QRY_Select_Bairros.BairrosID,"BairrosID") Resultado += ws_xml_registro_corpo(QRY_Select_Bairros.NomeBairro,"NomeBairro")
Resultado += ws_xml_registro_final(No_Xml)
END
ELSE
IF X = 0 THEN Resultado = ws_zero_registros(No_Xml) END
END
Resultado += "<TOTAL>"+X+"</TOTAL>" Resultado += "</Retorno></Xml>"
ELSE
Resultado = ws_parametros_invalidos(No_Xml)
END
END
IF Upper(Acao) <> "SELECT" THEN Resultado += ws_xml_registro_comeco(No_Xml, X)
Resultado += "<ERRO>ACAO INVALIDA</ERRO>"
Resultado += ws_xml_registro_final(No_Xml)
ws_a_log(No_Xml,"MOBILE",HErrorInfo() +" - "+ ErrorInfo()) END
HConnectionClose(ConnNativa)
ELSE
Resultado = ws_token_invalido(No_Xml)
END
ArrayAdd(arrResultado,Resultado)
RESULT (arrResultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:25 |
Procedure ws_bairros_filtro_select(Token, Telefone_Imei, Acao, ID, Bairro)
X is int = 0
Resultado is string = "" arrResultado is array of string ArrayDeleteAll(arrResultado)
TokenOk is boolean = False Metodo is string = "ws_bairros_filtro_select" No_Xml is string = "NoXml"
IF Token <> "" THEN
OkConn is boolean = False
OkConn = HConnectionOpen(ConnNativa)
IF OkConn = False THEN
Resultado = ws_conexao_falha(No_Xml)
ELSE
TokenOk = ws_token(Token,Telefone_Imei,Acao,Metodo)
IF TokenOk = False THEN
Resultado = ws_erro_token(No_Xml) Msg is string = Metodo +";"+ Resultado ws_a_log(Token,"MOBILE",Msg)
ELSE
Comando is string = Metodo +";"+ Acao ws_a_log(Token,"MOBILE",Comando)
END
IF TokenOk = True AND Upper(Acao) = "SELECT"
ok is boolean = HExecuteQuery(QRY_SelectBairro_Filtro,hQueryDefault,ID, Bairro)
Resultado = "<Xml><Retorno>"
IF ok = True
FOR EACH QRY_SelectBairro_Filtro
X += 1
Resultado += ws_xml_registro_comeco(No_Xml, X)
Resultado += ws_xml_registro_corpo(QRY_SelectBairro_Filtro.BairrosID,"BairrosID") Resultado += ws_xml_registro_corpo(QRY_SelectBairro_Filtro.NomeBairro,"NomeBairro")
Resultado += ws_xml_registro_final(No_Xml)
END
ELSE
IF X = 0 THEN Resultado = ws_zero_registros(No_Xml) END
END
Resultado += "<TOTAL>"+X+"</TOTAL>" Resultado += "</Retorno></Xml>"
ELSE
Resultado = ws_parametros_invalidos(No_Xml)
END
END
IF Upper(Acao) <> "SELECT" THEN Resultado += ws_xml_registro_comeco(No_Xml, X)
Resultado += "<ERRO>ACAO INVALIDA</ERRO>"
Resultado += ws_xml_registro_final(No_Xml)
ws_a_log(No_Xml,"MOBILE",HErrorInfo() +" - "+ ErrorInfo()) END
HConnectionClose(ConnNativa)
ELSE
Resultado = ws_token_invalido(No_Xml)
END
ArrayAdd(arrResultado,Resultado)
RESULT (arrResultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:26 |
Procedure ws_bairro_update(Token, Telefone_Imei, Acao, ID, Bairro)
X is int = 0
Resultado is string = "" arrResultado is array of string ArrayDeleteAll(arrResultado)
TokenOk is boolean = False Metodo is string = "ws_bairro_update" No_Xml is string = "NoXml"
IF Token <> "" THEN
OkConn is boolean = False
OkConn = HConnectionOpen(ConnNativa)
IF OkConn = False THEN
Resultado = ws_conexao_falha(No_Xml)
ELSE
TokenOk = ws_token(Token,Telefone_Imei,Acao,Metodo)
IF TokenOk = False THEN
Resultado = ws_erro_token(No_Xml) Msg is string = Metodo +";"+ Resultado ws_a_log(Token,"MOBILE",Msg)
ELSE
Comando is string = Metodo +";"+ Acao ws_a_log(Token,"MOBILE",Comando)
END
IF TokenOk = True AND Upper(Acao) = "UPDATE"
ok is boolean = HExecuteQuery(QRY_UpdateBairro,hQueryDefault,Bairro,ID)
Resultado = "<Xml><Retorno>"
IF ok = True
Resultado = ws_gravou("Bairro")
ELSE
IF X = 0 THEN Resultado = ws_zero_registros(No_Xml) END
END
Resultado += "<TOTAL>"+X+"</TOTAL>" Resultado += "</Retorno></Xml>"
ELSE
Resultado = ws_parametros_invalidos(No_Xml)
END
END
IF Upper(Acao) <> "SELECT" THEN Resultado += ws_xml_registro_comeco(No_Xml, X)
Resultado += "<ERRO>ACAO INVALIDA</ERRO>"
Resultado += ws_xml_registro_final(No_Xml)
ws_a_log(No_Xml,"MOBILE",HErrorInfo() +" - "+ ErrorInfo()) END
HConnectionClose(ConnNativa)
ELSE
Resultado = ws_token_invalido(No_Xml)
END
ArrayAdd(arrResultado,Resultado)
RESULT (arrResultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:26 |
Procedure ws_bairro_incluir(Token, Telefone_Imei, Acao, Bairro)
X is int = 0
Resultado is string = "" arrResultado is array of string ArrayDeleteAll(arrResultado)
TokenOk is boolean = False Metodo is string = "ws_bairro_incluir" No_Xml is string = "NoXml"
IF Token <> "" THEN
OkConn is boolean = False
OkConn = HConnectionOpen(ConnNativa)
IF OkConn = False THEN
Resultado = ws_conexao_falha(No_Xml)
ELSE
TokenOk = ws_token(Token,Telefone_Imei,Acao,Metodo)
IF TokenOk = False THEN
Resultado = ws_erro_token(No_Xml) Msg is string = Metodo +";"+ Resultado ws_a_log(Token,"MOBILE",Msg)
ELSE
Comando is string = Metodo +";"+ Acao ws_a_log(Token,"MOBILE",Comando)
END
IF TokenOk = True AND Upper(Acao) = "INSERT"
ok is boolean = HExecuteQuery(QRY_IncluirBairro,hQueryDefault,Bairro)
Resultado = "<Xml><Retorno>"
IF ok = True
Resultado = ws_gravou("Bairro")
ELSE
IF X = 0 THEN Resultado = ws_zero_registros(No_Xml) END
END
Resultado += "<TOTAL>"+X+"</TOTAL>" Resultado += "</Retorno></Xml>"
ELSE
Resultado = ws_parametros_invalidos(No_Xml)
END
END
IF Upper(Acao) <> "SELECT" THEN Resultado += ws_xml_registro_comeco(No_Xml, X)
Resultado += "<ERRO>ACAO INVALIDA</ERRO>"
Resultado += ws_xml_registro_final(No_Xml)
ws_a_log(No_Xml,"MOBILE",HErrorInfo() +" - "+ ErrorInfo()) END
HConnectionClose(ConnNativa)
ELSE
Resultado = ws_token_invalido(No_Xml)
END
ArrayAdd(arrResultado,Resultado)
RESULT (arrResultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:26 |
Procedure ws_bairro_delete_unico(Token, Telefone_Imei, Acao, ID)
X is int = 0
Resultado is string = "" arrResultado is array of string ArrayDeleteAll(arrResultado)
TokenOk is boolean = False Metodo is string = "ws_bairro_delete_unico" No_Xml is string = "NoXml"
IF Token <> "" THEN
OkConn is boolean = False
OkConn = HConnectionOpen(ConnNativa)
IF OkConn = False THEN
Resultado = ws_conexao_falha(No_Xml)
ELSE
TokenOk = ws_token(Token,Telefone_Imei,Acao,Metodo)
IF TokenOk = False THEN
Resultado = ws_erro_token(No_Xml) Msg is string = Metodo +";"+ Resultado ws_a_log(Token,"MOBILE",Msg)
ELSE
Comando is string = Metodo +";"+ Acao ws_a_log(Token,"MOBILE",Comando)
END
IF TokenOk = True AND Upper(Acao) = "DELETE"
ok is boolean = HExecuteQuery(QRY_DeleteBairroUnico,hQueryDefault,ID)
Resultado = "<Xml><Retorno>"
IF ok = True
Resultado = ws_deletou("Bairros")
ELSE
IF X = 0 THEN Resultado = ws_zero_registros(No_Xml) END
END
Resultado += "<TOTAL>"+X+"</TOTAL>" Resultado += "</Retorno></Xml>"
ELSE
Resultado = ws_parametros_invalidos(No_Xml)
END
END
IF Upper(Acao) <> "SELECT" THEN Resultado += ws_xml_registro_comeco(No_Xml, X)
Resultado += "<ERRO>ACAO INVALIDA</ERRO>"
Resultado += ws_xml_registro_final(No_Xml)
ws_a_log(No_Xml,"MOBILE",HErrorInfo() +" - "+ ErrorInfo()) END
HConnectionClose(ConnNativa)
ELSE
Resultado = ws_token_invalido(No_Xml)
END
ArrayAdd(arrResultado,Resultado)
RESULT (arrResultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:27 |
Procedure ws_bairro_delete_todos(Token, Telefone_Imei, Acao)
X is int = 0
Resultado is string = "" arrResultado is array of string ArrayDeleteAll(arrResultado)
TokenOk is boolean = False Metodo is string = "ws_bairro_delete_todos" No_Xml is string = "NoXml"
IF Token <> "" THEN
OkConn is boolean = False
OkConn = HConnectionOpen(ConnNativa)
IF OkConn = False THEN
Resultado = ws_conexao_falha(No_Xml)
ELSE
TokenOk = ws_token(Token,Telefone_Imei,Acao,Metodo)
IF TokenOk = False THEN
Resultado = ws_erro_token(No_Xml) Msg is string = Metodo +";"+ Resultado ws_a_log(Token,"MOBILE",Msg)
ELSE
Comando is string = Metodo +";"+ Acao ws_a_log(Token,"MOBILE",Comando)
END
IF TokenOk = True AND Upper(Acao) = "DELETE"
ok is boolean = HExecuteQuery(QRY_DeleteBairrosTodos,hQueryDefault)
Resultado = "<Xml><Retorno>"
IF ok = True
Resultado = ws_deletou("Bairros")
ELSE
IF X = 0 THEN Resultado = ws_zero_registros(No_Xml) END
END
Resultado += "<TOTAL>"+X+"</TOTAL>" Resultado += "</Retorno></Xml>"
ELSE
Resultado = ws_parametros_invalidos(No_Xml)
END
END
IF Upper(Acao) <> "SELECT" THEN Resultado += ws_xml_registro_comeco(No_Xml, X)
Resultado += "<ERRO>ACAO INVALIDA</ERRO>"
Resultado += ws_xml_registro_final(No_Xml)
ws_a_log(No_Xml,"MOBILE",HErrorInfo() +" - "+ ErrorInfo()) END
HConnectionClose(ConnNativa)
ELSE
Resultado = ws_token_invalido(No_Xml)
END
ArrayAdd(arrResultado,Resultado)
RESULT (arrResultado) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:29 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:30 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 13 messages Popularité : +9 (9 votes) |
|
Posté le 02 septembre 2015 - 16:49 |
Excelente Tutorial, estou finalizando meu webservice seguindo os tutoriais e video (
) do Adriano..esta ficando show de bola!! Assim que finalizar disponibilizarei o link para verificarem....excelente Ferramenta!!! Parabéns pelos videos e aulas Adriano!! |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 16:55 |
Obrigado!
Sucesso, se possivel divulgue os meus posts em suas redes sociais...
[ ]´s
Adriano Boller Representante PcSoft (41) 9949 1800 adrianoboller@gmail.com |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 17:03 |
XML_Retorno is string = ""
Retorno is a ws_treino_select_bairroResponse
Retorno = ws_treino_select_bairro(290,1800,"SELECT")
XML_Retorno = Retorno.ws_treino_select_bairroResult
Info(XML_Retorno)
|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 02 septembre 2015 - 17:05 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 03 septembre 2015 - 22:28 |
Observações Importantes para um Webservice:
1 - Segurança - voce deve ter controle quem esta fazendo as consultas em seu codigo deve ter o log que é uma tabela simples do proprio banco que tenha o ip de quem esta acessando o seu webservice e o metodo que esta fazendo consulta. É interessante fazer um controle de execuções indevidas, quantidade de vezes que fez o comando no dia pra saber se nao estao tentando derrubar o serviço... No caso de ser o mesmo ip e muitas vezes a execucao do metodo nao deixe executar o comando que leia o restante do metodo do webservice aborte e notifique via xml que a quantidade excedeu. Faça Log é o unico controle que voce terá para dai tomar as suas atitudes de controle. Crie um token de acesso, não deixe executar nenhum comando se o token nao existir cadastrado em seu banco de dados e que esteja com o status de ativo, só entao dai deixe ler, incluir, alterar e excluir as tabelas do seu banco de dados, veja meus exemplos de webservice todos tem Token.
2 - Firewall - é um dos vilões, que as vezes mal configurado o teu webservice nao funciona, veja se ele esta usando as portas certas e se as regras do seu firewall nao estao bloqueando o acesso e a execução dos metodos externamente.
3 - Testes - Teste em sua rede do ip interno e no ip externo se tem o mesmo comportamento, voce tem que ser capaz de executar os comandos nas duas classes de ips sem problemas, caso contrario peça a ajuda de um administrador de infraestrutura de redes e explique o caso.
4 - Servidor Local de Internet - Você terá que ter 2 links de internet caso o servidor de webservice esteja localmente na sua empresa... voce tera que usar um wifi de outra operadora ou a rede do seu celular com credito e no modo Romaning ou outro meio para poder fazer o Deploy. Pois o Ip externo pode gerar um conflito de dns que acaba nao achando o servidor e o Deploy não acaba funcionando. Estou verificando com a PcSoft ter no Deploy o local para por o ip interno e o o ip externo para evitar esse tipo de manobra.
5 - Anti-virus - Interessante ter um bom antivirus (Kaspersky é um bom antivirus, eu uso o Endpoint Corporante Original e registrado para 40 maquinas, recomendo pela central de controle da rede) e um Hardware DMZ habilitado, pode ser um Microtik bem configurado já ajuda.
6 - Relação de confiança - Entre o servidor de banco de dados e o servidor de webservice no caso de ter cada item/serviço em maquinas diferentes, oas acessos entre as duas maquinas devem ser transparentes, não pode podeir senha entre as duas maquinas ao fazer uma consulta no banco de dados pelo servidor de webservice, faça esse teste, um pequeno programa que faça o connect e leia uma tabela sem problemas. Deve ter o mesmo usuario nas duas maquinas com mesmo nome, senha e diretivas IDENTICAS, isso gera assim uma relação de confiaça entre os 2 servidores.
Julgo que com essas informações consiga ter um bom WEBSERVICE
Forte abraço e sucesso...
-- Adriano Jose Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com ______________________________________________ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 19 septembre 2015 - 21:58 |
Procedure ws_mobile_configuracoes()
DB_InitializeDatabase()
ChangeCharset(charsetOccidental)
XML_Retorno is string = ""
RetornoXml is a ws_mobile_configResponse
RetornoXml = ws_mobile_config(11111111,222222222,"SELECT")
XML_Retorno = RetornoXml.ws_mobile_configResult
XML_RetornoBuffer is Buffer = UTF8ToAnsi(XML_Retorno)
XmlDoc is XMLDocument XmlDoc = XMLOpen(XML_RetornoBuffer,fromString) NoXml is xmlNode
FOR EACH NoXml OF XmlDoc.Xml.Retorno on NoXml
t010_MobileConfig.t010_Codigo = XmlDoc.Xml.Retorno.NoXml.NG0030_Codigo t010_MobileConfig.t010_Descricao = XmlDoc.Xml.Retorno.NoXml.NG0030_Descricao t010_MobileConfig.t010_Valor = XmlDoc.Xml.Retorno.NoXml.NG0030_Valor t010_MobileConfig.t010_Status = XmlDoc.Xml.Retorno.NoXml.NG0030_Status HAdd(t010_MobileConfig)
END
-- Adriano Jose Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com ______________________________________________ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 08 octobre 2015 - 16:26 |
Procedure ws_a_log(Token, Aplicativo, Metodo)
Ip is string = MeuIpFixo() IF Ip = "" ip = WebserviceClientIPAddress() END Metodo = Ip + " => " + Metodo
Token = NoAccent(Token) Token = Middle(Token,1,50) Token = NoSpace(NoEnter(Token))
Aplicativo = NoAccent(Aplicativo) Aplicativo = Middle(Aplicativo,1,255) Aplicativo = NoSpace(NoEnter(Aplicativo))
Metodo = NoAccent(Metodo) Metodo = Middle(Metodo,1,1000) Metodo = NoSpace(NoEnter(Metodo))
ERRO_SQL is string = ""
ok is boolean = False
IF Token <> ""
NG0013_Webservice_Log.DataHora = DateSys() + TimeSys() NG0013_Webservice_Log.Token = Token NG0013_Webservice_Log.Aplicativo = Aplicativo NG0013_Webservice_Log.Metodo = Metodo ok = HAdd(NG0013_Webservice_Log)
IF ok = False THEN ERRO_SQL = HErrorInfo() + ErrorInfo() END
END
RESULT (ok)
-- Adriano Jose Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller ______________________________________________ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 08 octobre 2015 - 16:26 |
Procedure MeuIpFixo()
nInicioBloco, nFinalBloco is int = 0
IP is string = ""
Url is string = "http://www.meuip.com.br/"
HTTPTimeOut(1000)
HTTPRequest(Url)
bufRetorno is Buffer = HTTPGetResult(httpResult)
bufRetorno = Replace(bufRetorno,Charact(34),"")
bufRetorno = Replace(bufRetorno,"'","")
nInicioBloco = PositionOccurrence(bufRetorno,"document.getElementById(div_ip).innerHTML = ",firstRank,FromBeginning) + Length("document.getElementById(div_ip).innerHTML = ")
IF nInicioBloco > 0 THEN
bufRetorno = Middle(bufRetorno,nInicioBloco,1000)
IF nInicioBloco > 0 bufRetorno = Middle(bufRetorno,1,20) END
ELSE
nInicioBloco = PositionOccurrence(bufRetorno,"<span class=style1> detectando (IPv4 ou IPv6)...</span>-->",firstRank,FromBeginning) + Length("<span class=style1> detectando (IPv4 ou IPv6)...</span>-->")
IF nInicioBloco > 0 bufRetorno = Middle(bufRetorno,nInicioBloco,20) END
END
IF bufRetorno <> ""
nFinalBloco = PositionOccurrence(bufRetorno,",",firstRank,FromBeginning) - 1
IF nFinalBloco > 0 THEN bufRetorno = Middle(bufRetorno,1,nFinalBloco) END
END
bufRetorno = Replace(bufRetorno,"=","")
bufRetorno = NoSpace(bufRetorno)
IP = NoSpace(bufRetorno)
RESULT(IP)
-- Adriano Jose Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller ______________________________________________ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 06 mai 2016 - 01:21 |
PREZADOS,
NAO ESQUEÇAM DE COLOCAR NO GLOBAL DA PROCEDURE NA PRIMEIRA LINHA ESSE CODIGO OK:
arr_Resultados is array of string
gsValorMemorizado is string = 1
DeclareWebserviceContext(gsValorMemorizado)
DeclareWebserviceContext(arr_Resultados)
SEM ISSO NAO APARECE O(S) CUBO(S) AZUL(IS)...
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 655 messages Popularité : +175 (223 votes) |
|
Posté le 09 juin 2016 - 16:05 |
Prezado,
Lembro e é importante para um webservice controles de TOKEN, controles que capturem IP de quem consome, controles que façam log de tudo que acontece via Webservice, lembro que podem sofrer Force Brute, lembro que tem muito mais do que apenas citei nos meus posts. Vejam o webservice como acesso ao seu banco e a sua empresa, todos os cuidados devem ser tomados e ainda é pouco... mas é muito melhor incomparavelmente do que colocar a string de conexão dentro do mobile e dar a chave ao bandido de bandeja para ele roubar os dados e dar drop em seu banco.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
|