Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
#INCLUDE "TOTVS.CH"
#INCLUDE "XMLCSVCS.CH"

user function httpsMD()
Local cUrl := "http://ptsv2.com/t/totvstests/post"
Local nTimeOut := 120
Local aHeadOut := {}
Local cHeadRet := ""
Local cPostRet := ""
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="\Teste.txt" ' + CRLF     //Envio de Arquivo especificando o Content-Type
cPostParms += 'Content-Type: text/plain;' + CRLF
cPostParms += 'Content-Disposition: form-data; name="FileTextExample"; filename="\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

cPostRet := HTTPSPost( cURL, "\certs\cert.pem", "\certs\key.pem", "", "", cPostParms, nTimeOut, aHeadOut, @cHeadRet )
if !empty(cPostRet)
  conout("HttpPost Ok ")
  varinfo("WebPage", cPostRet)
else
  conout("HttpPost Failed.")
  varinfo("Header", cHeadRet)
Endif
Return

//Abaixo é exemplificado uma requisição que não é formatada pelo Application Server.
//Isso é últi quando deseja-se montar o multipart manualmente em advpl.
user function httpsMD2()
  Local cUrl := "http://ptsv2.com/t/totvstests/post"
  Local nTimeOut := 120
  Local aHeadOut := {}
  Local cHeadRet := ""
  Local cPostRet := ""
  Local cPostParms := ""
  Local cUser := "totvs"
  Local cPass:= "totvs"
  Local cCodSiaf := "sp"
  local cXML := "<root><test>Totvs</test></root>"
  local cNameArq := "\Teste.txt"

  aadd(aHeadOut,'User-Agent: Mozilla/4.0 (compatible; Protheus '+GetBuild()+')')
  aadd(aHeadOut,'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryFbmu0bODj7UvfQEV')
 
  cPostParms += '------WebKitFormBoundaryFbmu0bODj7UvfQEV'
  cPostParms += CRLF
  cPostParms += 'Content-Disposition: form-data; name="login"'
  cPostParms += CRLF
  cPostParms += CRLF
  cPostParms += cUser
  cPostParms += CRLF
  cPostParms += '------WebKitFormBoundaryFbmu0bODj7UvfQEV'
  cPostParms += CRLF
  cPostParms += 'Content-Disposition: form-data; name="senha"'
  cPostParms += CRLF
  cPostParms += CRLF
  cPostParms += cPass
  cPostParms += CRLF
  cPostParms += '------WebKitFormBoundaryFbmu0bODj7UvfQEV'
  cPostParms += CRLF
  cPostParms += 'Content-Disposition: form-data; name="cidade"'
  cPostParms += CRLF
  cPostParms += CRLF
  cPostParms += cCodSiaf
  cPostParms += CRLF
  cPostParms += '------WebKitFormBoundaryFbmu0bODj7UvfQEV'
  cPostParms += CRLF
  cPostParms += 'Content-Disposition: form-data; name="f1"; filename="'+cNameArq+'"'
  cPostParms += CRLF
  cPostParms += 'Content-Type: text/plain'
  cPostParms += CRLF
  cPostParms += CRLF
  cPostParms += cXML
  cPostParms += CRLF
  cPostParms += '------WebKitFormBoundaryFbmu0bODj7UvfQEV--'
 
  cPostRet := HTTPSPost( cURL, "\certs\cert.pem", "\certs\key.pem", "", "", cPostParms, nTimeOut, aHeadOut, @cHeadRet )
  if !empty(cPostRet)
    conout("HttpPost Ok ")
    varinfo("WebPage", cPostRet)
  else
      conout("HttpPost Failed.")
      varinfo("Header", cHeadRet)
    Endif
Return

...