Prof. Walmes Marques Zeviani
11 Abr 2017
Figura 1: Comunicação cliente por HTTP.
A estrutura geral de uma URL é esquema://hostname:port/path?querystring#fragment
esquema
: corresponde ao protocolo.hostname
: endereço ou IP do servidor.port
: porta que será usada para a comunicação.path
: caminho para arquivos dentro do sistema de arquivos do servidor.querystring
: permite utilizar campos e valores para o preenchimento de formulários ou parâmetros de exibição, por exemplo.fragment
: permite localizar conteúdo dentro de uma página, por exemplo.
RCurl
e httr
.libcurl
, biblioteca externa em C.libcurl
fornece interface simples para vários protocolos.
getURL()
: retorna uma string com a página.getBinaryURL()
: permite baixar arquivos binários.library(RCurl)
# Funciona também para HTTPS.
getURL("http://leg.ufpr.br/~paulojus/")
# Funciona para imagens.
img <- getBinaryURL("http://leg.ufpr.br/~paulojus/images/tux.gif")
writeBin(img, "Tux.gif")
url <- "http://www.r-datacollection.com/materials/http/GETexample.html"
u <- getURL(url)
cat(u)
Os dados do formulário são tratados pelo PHP.
# URL do PHP.
url <- "http://www.r-datacollection.com/materials/http/GETexample.php"
# URL com valores para os campos do formulário.
req <- sprintf(paste0(url, "?name=%s&age=%d"), "Angenor", 79)
req
# Resultado da requisição.
u <- getURL(req)
cat(u)
# Um jeito mais fácil.
cat(getForm(url, name = "Angenor", age = 79))
# URL do PHP.
url <- "http://www.r-datacollection.com/materials/http/POSTexample.php"
cat(postForm(url, name = "Angenor", age = 79, style = "post"))
getCurlHandle()
.# Com uma conexão persistente (mas não deu certo).
han <- getCurlHandle(followlocation = TRUE,
cookiefile = "",
httpheader = "https://www.cifraclub.com.br/")
system.time(sapply(urls, FUN = getURL, handle = han))