Á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 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="\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
    
  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

//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 postMFData()
  Local cUrl := "http://ptsv2.com/t/totvstests/post"
  Local nTimeOut := 120
  Local aHeadOut := {}
  Local cHeadRet := ""
  Local sPostRet := ""
  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--'
 
  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

...