Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/3279126062824/newLayouttecnologia.css |
|
Pagetitle | ||
---|---|---|
|
...
...
...
|
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.
Sintaxe
Bloco de código | ||
---|---|---|
| ||
HTTPSPost( <cUrl> cURL >, <cCertificate> cCertificate >, <cPrivKey> cPrivKey >, <cPassPhrase> cPassword >, [ cGETParms ], [ cPOSTParms ], [ nTimeOut ], [ aHeadStr ], [ cHeaderRet ]) --> cReturn
, [ lClient ] )
|
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|
...
cURL |
...
caractere | Indica o endereço HTTP com a pasta e o documento solicitado. | X | |
cCertificate |
...
caractere | Indica o path do arquivo, em formato PEM (modelo Apache), do arquivo que contém o certificado digital. |
...
X | ||
cPrivKey |
...
caractere | Indica o path da chave privada, em formato PEM (modelo Apache), do arquivo que contém a chave privada, referente ao certificado digital |
...
. | X |
...
cPassword |
...
caractere | Indica a senha que será utilizada para a abertura da chave privada. |
...
Para uma chave privada que não possua senha |
...
deve ser informada uma string vazia. |
...
X | ||
cGETParms |
...
caractere | Indica 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 (""). | ||
cPOSTParms |
...
caractere | Indica 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 (""). | ||
nTimeOut |
...
numérico | Indica 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. | ||
aHeadStr |
...
vetor | Indica o array que contêm as strings que serão acrescentadas no header da requisição HTTP que será realizada. | ||
cHeaderRet |
...
caractere | Indica 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. | X | ||
lClient | lógico | Indica se o POST será feito pelo SmartClient (.T.) ou pelo AppServer (.F.). Valor padrão: .F.. |
Retorno
...
Nome | Tipo | Descrição |
---|---|---|
cRet | caractere |
...
Retorna a string que corresponde a requisição solicitada. |
Observações
O parâmetro
...
<cGetParms> representa uma lista de itens, separados por '&'. Pois, a mesma segue o formato URI - Uniform Resource Identiers: Query
...
Component.
Bloco de código | ||||
---|---|---|---|---|
| ||||
Exemplo: "param1=value1&m2=value2". |
Neste caso, ao realizar
...
o POST para o endereço, este seria completado com os parâmetros Get.
Bloco de código | ||||
---|---|---|---|---|
| ||||
Exemplo: http://www.totvs.com?param1=value1¶m2 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 aHeadStr um elemento 'Content-Type: application/x-www-form-url'.
- Caso o POST seja feito no AppServer e não for passado um caminho no environment para o parâmetro cCertificate, a aplicação será encerrada com uma exceção cuja mensagem será: "Only server path are allowed to Certificate on HttpSPost".
- Caso o POST seja feito no AppServer e não for passado um caminho no environment para o parâmetro cPrivKey, a aplicação será encerrada com uma exceção cuja mensagem será: "Only server path are allowed to PrivKey on HttpSPost".
Exemplos
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#include "totvs.ch"
#include "xmlcsvcs.ch"
user function TSTPostSSL()
Local cURL
#INCLUDE "TOTVS.CH" #INCLUDE "XMLCSVCS.CH" User Function TSTPostSSL() Local cUrl := "https://homologacao.nfe.fazenda.sp.gov.br:443/nfeWEB/services/NfeStatusServico.asmx" Local nTimeOut :=120 120 Local aHeadOut := {} Local cHeadRet := "" LocalsPostRet cPostRet := "" // Acrescenta o UserAgent na requisição ... // http://tools.ietf.org/html/rfc3261#page-179 aadd( AAdd( aHeadOut, 'User-Agent: Mozilla/4.0 (compatible; Protheus ' + GetBuild() + ')') sPostRet ) cPostRet :=HttpSPost HTTPSPost(cUrl cURL, "\certs\cert.pem", "\certs\privkey.pem", "pwdprivkey", "", "", nTimeOut, aHeadOut, @cHeadRet) IF ) if Empty(( sPostRet ) Conout("Ok HttpSPost") Conout("WebPage", sPostRet) ELSE Conout("Fail HttpSPost. Verifique conf. de Proxy") VarINFO( conout( "Fail HTTPSPost" ) else conout( "OK HTTPSPost" ) varinfo( "WebPage", cPostRet ) endif varinfo( "Header", cHeadRet ) ENDIF Return
return
|
Abrangência
...
Função disponível, na linguagem AdvPL, para build superior a 7.00.090818P.