Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/6062824/tecnologia.css
|
Pagetitle | ||||
---|---|---|---|---|
|
...
Nome | Tipo | Descrição |
---|---|---|
cRet | caractere | Retorna a string que corresponde a requisição solicitada. |
Informações | |||||||
---|---|---|---|---|---|---|---|
| |||||||
|
Exemplos
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#INCLUDE "TOTVS.CH" #INCLUDE "XMLCSVCS.CH" user function tstpost() Local cUrl := "http://www.google.com" Local nTimeOut := 120 Local aHeadOut := {} Local cHeadRet := "" Local sPostRet := "" aadd(aHeadOut,'User-Agent: Mozilla/4.0 (compatible; Protheus '+GetBuild()+')') aadd(aHeadOut,'Content-Type: application/x-www-form-urlencoded') sPostRet := HttpPost(cUrl,"REQUEST=1212","EXAMPLEFIELD=DUMMY",nTimeOut,aHeadOut,@cHeadRet) if !empty(sPostRet) conout("HttpPost Ok") varinfo("WebPage", sPostRet) else conout("HttpPost Failed.") varinfo("Header", cHeadRet) Endif Return |
Nota | ||||
---|---|---|---|---|
| ||||
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 Apenas paths relativos são suportados por questão de segurança. Arquivos devem estar abaixo do diretório RootPath. Se na requisição existir o boundary a mesma não será formata pelo Application Server e será apenas repassada 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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#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 := "" aadd(aHeadOut,'User-Agent: Mozilla/4.0 (compatible; Protheus '+GetBuild()+')') aadd(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 |