Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/6062824/tecnologia.css

Pagetitle
HTTPSPost
HTTPSPost

...

        

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 à requisição solicitada.

...

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
#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
  Local aHeadOut := {}
  Local cHeadRet := ""
  Local cPostRet := ""
  
  // Acrescenta o UserAgent na requisição ...
  // http://tools.ietf.org/html/rfc3261#page-179
  
  AAdd( aHeadOut, 'User-Agent: Mozilla/4.0 (compatible; Protheus ' + GetBuild() + ')' )
  cPostRet := HTTPSPost( cURL, "\certs\cert.pem", "\certs\privkey.pem", "pwdprivkey", "", "", nTimeOut, aHeadOut, @cHeadRet )
  
  if Empty( sPostRet )
conout( "Fail   HTTPSPost" )
else
conout( "FailOK HTTPSPost" )
varinfo( "WebPage", cPostRet )
endif

varinfo( "Header",  else
    conout( "OK HTTPSPost" )
    varinfo( "WebPage", cPostRet )
  endif
  
  varinfo( "Header", cHeadRet )
returncHeadRet )
return
Nota
icontrue
titleAtenção

Para utilização do 'Content-Type: multipart/form-data' atente-se a formatação dos Parametros do Post (uma linha em branco deve ser inserida sempre antes do conteúdo de cada elemento).

É possível informar o boundary que será utilizado na transmissão utilizando a seguinte sintaxe: "Content-Type: multipart/form-data; boundary=MyBoundary"

Quando o filename é informado, o conteúdo do arquivo será carregado pelo Application Server e será enviado. Para correta interpretação da mensagem pelo server que receberá o conteúdo do POST é ideal que o Content-type seja especificado. Para lista dos content-types possíveis consulte: http://tdn.totvs.com/display/tec/Valores+de+Content-Types

Essa funcionalidade está disponível apenas em versões iguais ou superiores a: 13.1.3.44,13.2.3.44 e 17.3.0.13.

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
#INCLUDE "TOTVS.CH"
#INCLUDE "XMLCSVCS.CH"
 
user function tstpostMFormData()
Local cUrl := "http://ptsv2.com/t/totvstests/post"
Local nTimeOut := 120
Local aHeadOut := {}
Local cHeadRet := ""
Local sPostRet := ""
aadd(aHeadOut,'User-Agent: Mozilla/4.0 (compatible; Protheus '+GetBuild()+')')
//aadd(Content-Type: multipart/form-data; boundary=TotvsBoundaryTest')                                      //Se desejar informar o boundary
aadd(aHeadOut,'Content-Type: multipart/form-data')
 
cPostParms := 'Content-Disposition: form-data; name="FileTextExample"; filename="D:\Teste.txt" ' + CRLF     //Envio de Arquivo especificando o Content-Type
cPostParms += 'Content-Type: text/plain;' + CRLF
cPostParms += 'Content-Disposition: form-data; name="FileTextExample"; filename="D:\Teste.txt"' + CRLF      //Envio de Arquivo sem espeficar o Content-Type
cPostParms += 'Content-Disposition: form-data; name="someParam"' + CRLF + CRLF                              //Envio de paramentos. Obrigatório Linha em branco antes do conteúdo
cPostParms += 'someParamValue'                                                                              //Conteúdo do Parametro
  
sPostRet := HttpPost(cUrl,"",cPostParms,nTimeOut,aHeadOut,@cHeadRet)
if !empty(sPostRet)
  conout("HttpPost Ok ")
  varinfo("WebPage", sPostRet)
else
  conout("HttpPost Failed.")
  varinfo("Header", cHeadRet)
Endif
Return

Abrangência

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

...