segunda-feira, 25 de julho de 2016

WX - Exemplo de uso dos comandos: httpcreateform, httpaddparameter, httpsendform, httpgetresult



http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/1533-exemplo-uso-dos-comandos-httpcreateform-httpaddparameter-httpsendform-httpgetresult/read.awp



Prezados,





Segue Exemplo de uso dos comandos: httpcreateform, httpaddparameter, httpsendform, httpgetresult:






Obs. Para descobrir o nome a ser usado no Form Virtual para as requisições de http. Use o Chrome visualizando o codigo http ou o firefox inspecionando o codigo http da pagina que deseja executar comandos.





















































Example: HTTPCreateForm / HTTPSendForm / HTTPRequest
//Example

//Identify the screen field name of html code

sPostParameter is string = "name = Adriano"

IF HTTPRequest("www.mysite.com", "", "", sPostParameter) = True THEN
Info("Request OK, result:", HTMLToText(HTTPGetResult(httpResult)))
END

HTTPCreateForm("FORM")
HTTPAddParameter("FORM", "name", "Adriano")

IF HTTPSendForm("FORM","www.mysite.com" ) = True THEN
Info("Request OK, result:", HTMLToText(HTTPGetResult(httpResult)))
END




ENVIAR UM ARQUIVO
HTTPCreateForm("FORM")
HTTPAddParameter("FORM", "Price", "3400")
HTTPAddFile("FORM", "Photo", "C:\Temp\MyPhoto.BMP")
...
HTTPSendForm("FORM", "www.mysite.com")




Assim é possível simplesmente usar sites que não possuem webservice e poder requisitar dados e recuperar informações, sem ter que abrir o site e fazer tudo em background. Recurso super interessante para extrair de sites como Sintegra, Receita Federal e outros sites que possuem formulários de dados. E assim fazer um preenchimento através de dados buscados em sites em seus sistemas.

Muito obrigado pelo exemplo Marcelo Santos.

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modifié, 24 juillet 2016 - 16:48

REQUISITOS BÁSICOS PARA UM WEBSERVICE SOAP OU REST:

[19:19:02] Adriano Boller: REQUISITOS BÁSICOS PARA UM WEBSERVICE SOAP OU REST:

- Instalar e Configurar o IIS ou Apache

- Instalar e configurar o WAS reserved ou a versão FULL

- Configurar o Firewall

- Configurar o antivírus para aceitar os programas e drivers em execução como seguros

- Verificar as portas se nao estao sendo usadas por outros programas

- Instalar o banco de dados exemplo hfsql ou mysql... (mssqlserver, oracle, db2, as/400 sao drivers nativos pagos)

- Instalar o gerenciador de banco de dados SGDB, Center Hfsql ou phpmyadmin, workbank...

- Instalar o Driver Nativo, exemplo MySql da pcsoft

- Instalar o Noip ou contratar um IP Fixo ou um host server Windows ou Linux com acesso as configurações e execução de comandos e deixar o WAS rodando

- roteador da internet, criar o alias da porta :8081 para quando usar o endereço dns do seu noip ou do seu ip fixo seja roteado para o seu servidor no ip da classe C tipo 192.168.1.100 e o IIS ou Apache abra a sua página ou o seu webservice SOAP ou REST de qualquer lugar do planeta.
[19:19:27 | Editado 19:19:34] Adriano Boller: Algo mais pessoal?


Webservice - Exemplo serviço RestFULL com o mobile.



[16:22:07] Fábio Alexandre Silveira: Pessoal, com a rotina abaixo consegui consumir  o serviço RestFULL com o mobile.


//Retorno ao Httprequest
ResCode     is Buffer
lstlotLocal    is ResultLoteLocal//Minha class 

//Dados de Envio
sHttpQuery     is string

//Minha Variaveis POST
sSistema    is string ="999999"
sAssinatura    is string = "xyxyxyxyxyxyxyxyxyxyyxxyyxyxy"
sUnidade    is string = "999"

//Dados de user
bufBUser    is Buffer = "MyUser"
bufBPassword   is Buffer = "XYXYXYXYXYXYXYYXYXYXYX"
//
bufSAuthenticacaoBasc is Buffer =  Crypt(StringBuild("%1:%2",bufBUser,bufBPassword), "", cryptNone    )


//Varialvel para armazenar dados do codigo de contagem e codigo do local
sCodContange   is string
sCodLocal    is string

//Limpa o looper
LooperDeleteAll(LOOP_LOTESCONTAGEM)

//Cria o formulário de envio
HTTPCreateForm("FORM")
HTTPAddParameter( "FORM","sistema",sSistema)
HTTPAddParameter( "FORM","assinatura",sAssinatura)
HTTPAddParameter( "FORM","unidade,",sUnidade)

IF NoSpace( EDT_CODLOTE)="" THEN
 //GET para a lista de lotes. Para o caso, onde o usuário não informou contagem e local

 //API
 sHttpQuery = URLEncode(StringBuild ("https://Seu _dominio:sua_porta/Sua API?sistema=%1&assinatura=%2&unidade=%3",sSistema,sAssinatura,sUnidade)) 

ELSE
 sCodContange = ExtractString(EDT_CODLOTE,1,"-",FromBeginning)
 sCodLocal = ExtractString(EDT_CODLOTE,2,"-",FromBeginning)
 IF sCodLocal = EOT OR sCodLocal="" THEN
  Info("Favor informar código do local")
  RETURN
 END

 HTTPAddParameter( "FORM","Parametro_1",sCodContange)
 HTTPAddParameter( "FORM","Parametro_1",sCodLocal)
 //API
 sHttpQuery = URLEncode( StringBuild( "https://Seu _dominio:sua_porta/Sua_API?sistema=%1&assinatura=%2&unidade=%3&contagem=%4&local=%5",sSistema,sAssinatura,sUnidade,sCodContange,sCodLocal))
END

//Authentica requsição
<COMPILE IF ConfigurationType=Android OR ConfigurationType=iOS>
 HTTP.IgnoreError =httpIgnoreInvalidCertificateName
<END>


//POST
ResStart is boolean = HTTPSendForm("FORM","Sua_Dominio",httpPost,"","Authorization: Basic" + bufSAuthenticacaoBasc   ,"application/json")

//GET
ResStart = HTTPSendForm("FORM",sHttpQuery,httpGet,"","Authorization: Basic " + bufSAuthenticacaoBasc  ,"application/json")




IF ResStart = True THEN
 //Resgata o valor da consulta
 ResCode= HTTPGetResult()
 
 IF ResCode <> "" THEN
  //Desserializao json na classe LotesLocais  
  Deserialize(lstlotLocal,ResCode,psdJSON)
 
  //Carrega o controle looper 
  FOR i = 1 TO ArrayCount(lstlotLocal.lista)
   LooperAddLine(LOOP_LOTESCONTAGEM,lstlotLocal.lista[i].idContagem,lstlotLocal.lista[i].descricaoLocal,lstlotLocal.lista[i].qtdNiveis,lstlotLocal.lista[i].qtdEndereco,lstlotLocal.lista[i].qtdProdutos)
  END
 ELSE
  Info("Registro não encontrado!")
  <COMPILE IF ConfigurationType=Android>
   SetFocus(EDT_CODLOTE)
  <END>
 END
 //Envia mensagem de erro
 Error(ErrorInfo(errFullDetails ))
END


CASE EXCEPTION:
Error( ExceptionInfo(errFullDetails))
[16:22:22] Fábio Alexandre Silveira: Espero que ajude.

Curso WinDev - Datas - 012 - Now








Video Youtube


Nessa aula vou mostrar como pegar a hora

In this lecture I will show how to get the time

Dans cette conférence, je vais vous montrer comment obtenir le temps
 

http://doc.windev.com/en-US/?3027024&name=now_function
http://doc.pcsoft.fr/fr-FR/?3027024&name=maintenant_fonction

Blog - WinDev - Curso Datas - 001/... - Diferença entre Datas - Duração
Blog - WinDev - Curso Datas - 002/... - Data - Função Dia da Semana - DateToDay
Blog - WinDev - Curso Datas - 003/... - Transformar Data Texto em Data Date
Blog - WinDev - Curso Datas - 004/... - Transformar Data Date em Texto
Blog - WinDev - Curso Datas - 005/... - Date em Texto - "2016-02-15T12:10:00-3:00" - DateToString
Blog - WinDev - Curso Datas - 006/... - Diferença entre Datas - DateDifference
Blog - WinDev - Curso Datas - 007/... - Saber o Ultimo Dia do Mes - LastDaOfMonth
Blog - WinDev - Curso Datas - 008/... - Mostra idade - Age
Blog - WinDev - Curso Datas - 009/... - Mes e Ano Corrente - CurrentMonth/CurrentYear
Blog - WinDev - Curso Datas - 010/... - Texto em Data - DateToString
Blog - WinDev - Curso Datas - 011/... - Inteiro Para Data - IntegerToDate
Blog - WinDev - Curso Datas - 012/... - Pegar Hora - Now
Blog - WinDev - Curso Datas - 013/... - Texto Para Data - StringtoDate
Blog - WinDev - Curso Datas - 014/... - Diferença Tempo - TimeDifference


gn_timer=TimerSys("hora",100,1)


PROCEDURE hora()
EDT_Time=Now()



EndTimerSys(gn_timer)
































Teste

Teste
teste