Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Portuguese

Pagetitle
HTTPSPost
HTTPSPost

Função: HTTPSPost

Permite emular um Client HTTP - Hypertext Transfer Protocol, utilizando protocolo HTTPS através de uma função AdvPL, postando um bloco de informações para um determinado documento publicado em um servidor Web, utilizando o método POST, permitindo a passagem de parâmetros adicionais via URL e aguardando por um tempo determinado (time-out) pela resposta do servidor solicitado.

HTTPSPost ( < cUrl>, < cCertificate>, < cPrivKey>, < cPassPhrase>, [ cGETParms], [ cPOSTParms], [ nTimeOut], [ aHeadStr], [ cHeaderRet] ) --> cReturn

 

NomeTipoDescriçãoObrigatórioReferência
cUrlCaracterIndica o endereço HTTP com a pasta e o documento solicitado.X 
cCertificateCaracterIndica o path do arquivo, em formato PEM (modelo Apache), do arquivo que contém o certificado digital. Esse path deve ser relativo ao rootpath do ambiente utilizado.X 
cPrivKeyCaracterIndica o path da chave privada, em formato PEM (modelo Apache), do arquivo que contém a chave privada, referente ao certificado digital. Esse path deve ser relativo ao rootpath do ambiente utilizado.X 
cPassPhraseCaracterIndica a senha que será utilizada para a abertura da chave privada. Uma chave privada que não possua senha, deve ser informada uma string vazia.Observação: É extremamente recomendável que a chave privada possua senha.X 
cGETParmsCaracterIndica uma string de parâmetros, do tipo GET, que serão enviados ao servidor HTTP através da URI. Caso não seja especificado, este parâmetro é considerado vazio ("").  
cPOSTParmsCaracterIndica uma string de parâmetros, do tipo POST, que serão enviados ao servidor HTTP através do pacote HTTP. Caso não seja especificado, este parâmetro é considerado vazio ("").  
nTimeOutNuméricoIndica o tempo, em segundos, máximo de inatividade permitido durante a recepção do documento. Caso não seja especificado, o valor assumido será de 120 segundos.  
aHeadStrVetorIndica o array que contêm as strings que serão acrescentadas no header da requisição HTTP que será realizada.  
cHeaderRetCaracterIndica a string que conterá o header de resposta HTTP enviado pelo servidor requisitado. Observação: A variável deve ser declarada antes da chamada da função.  

 

cReturn
    (caracter)
  • Retorna a string que corresponde a requisição solicitada.

O parâmetro <cGetParms> representa uma lista de itens, separados por '&'. Pois, a mesma segue o formato URI - Uniform Resource Identiers: Query Componet.

Exemplo: "param1=value1&m2=value2".


Neste caso, ao realizar o POST para o endereço, este seria completado com os parâmetros Get.

Exemplo http://www.totvs.com?param1=value1¶m2=value2.

Caso não seja retornado o documento antes do término do time-out especificado na chamada da função ou caso não seja possível localizar o servidor, seja por falha de resolução de DNS ou por erro de sintaxe ao especificar a URL, a função retornará nulo (NIL).

Caso não seja possível acessar o documento como, por exemplo, o documento não existe, o retorno será uma string HTML com a mensagem de erro HTML enviada pelo servidor correspondente.

Ao utilizar a função HTTPSPost(), pode-se especificar um Content-Type diferenciado para o conteúdo postado. Caso não seja especificado um Content-Type, alguns servidores tratam a informação postada como sendo um dado do tipo 'application/x-www-form-url', seria o equivalente a um formulário HTML postado via browser. Desta forma, outros servidores poderão não reconhecer tal informação postada dessa forma.
Para especificar que o conteúdo postado deve ser tratado como um POST de formulário HTTP, deve-se passar no parâmetro um elemento 'Content-Type: application/x-www-form-url'.
  

Importante
Função disponível, na linguagem AdvPL, para build superior a 7.00.090818P.

 

#INCLUDE "TOTVS.CH"
#INCLUDE "XMLCSVCS.CH"user

User functionFunction tstpostsslTSTPostSSL()

Local cUrl := "HTTPShttps://homologacao.nfe.fazenda.sp.gov.br:443/nfeWEB/services/NfeStatusServico.asmx"
Local nTimeOut := 120 120    
Local aHeadOut := {}
Local cHeadRet := ""
Local sPostRet := ""

// Acrescenta o UserAgent na requisição ...
// http://tools.ietf.org/html/rfc3261#page-179aadd179

aadd(aHeadOut,'User-Agent: Mozilla/4.0 (compatible; Protheus '+GetBuild()+')')
sPostRet := HttpSPost(cUrl, "\certs\cert.pem", "\certs\privkey.pem", "pwdprivkey", "","",nTimeOut,aHeadOut,@cHeadRet)if

IF Empty empty(sPostRet) conout    
    Conout("Ok HttpSPost") conout    
    Conout("WebPage", sPostRet)else conout
ELSE    
    Conout("Fail HttpSPost. Verifique conf. de Proxy") varinfo    
    VarINFO("Header", cHeadRet)endifreturn
ENDIF

Return
Protheus 10 , TOTVS Application Server 10 , ByYou Application Server