Como una forma de explorar cómo hacer un paquete en R para el Denver RUG, decidí que sería un pequeño proyecto divertido escribir un contenedor R alrededor de la API datasciencetoolkit. Las herramientas básicas R provienen del paquete RCurl como se puede imaginar. Estoy atrapado en un problema aparentemente simple y espero que alguien en este foro pueda apuntarme en la dirección correcta. El problema básico es que no puedo usar postForm() para pasar una cadena sin clave como parte de la opción de datos en curl, es decir curl -d "cadena" "dirección_a_api".Solicitud POST usando RCurl
Por ejemplo, desde la línea de comandos que podría hacer
$ curl -d "Tim O'Reilly, Archbishop Huxley" "http://www.datasciencetoolkit.org/text2people"
con éxito. Sin embargo, parece que postForm() requiere una clave explícita al pasar argumentos adicionales a la solicitud POST. Revisé el código de datasciencetoolkit y los documentos de desarrollador para obtener una clave posible, pero parece que no encuentro nada.
Como un lado, es bastante sencillo pasar entradas a través de una solicitud GET a otras partes de la API DSTK. Por ejemplo,
ip2coordinates <- function(ip) {
api <- "http://www.datasciencetoolkit.org/ip2coordinates/"
result <- getURL(paste(api, URLencode(ip), sep=""))
names(result) <- "ip"
return(result)
}
ip2coordinates('67.169.73.113')
producirá los resultados deseados.
Para ser claros, he leído los documentos de RCurl en el sitio omegahat de DTL, los documentos de RCurl con el paquete y la página del manual del curl. Sin embargo, me falta algo fundamental con respecto a curl (o quizás .opts() en la función postForm()) y parece que no puedo obtenerlo.
En python, básicamente podría hacer una solicitud POST 'sin procesar' usando httplib.HTTPConnection - ¿hay algo así como disponible en R? También miré la función simplePostToHost en el paquete httpRequest y pareció bloquear mi sesión R (parece que también requiere una clave).
FWIW, estoy usando R 2.13.0 en Mac 10.6.7.
Cualquier ayuda es muy apreciada. Todo el código estará disponible pronto en github si está interesado en jugar con el kit de herramientas de ciencia de datos.
Saludos.
¡Gracias por la ayuda! ¿Hay alguna razón por la cual la clave es 'a'? Intenté con 'nombre', 'texto' y muchas otras cosas. – rtelmore
Corrección: Intenté usar 'nombre', etc. en una llamada diferente. Intenté usar, p. Ej. postForm (api, cadena) y necesitas postForm (api, a = cadena). – rtelmore
Correcto, debe proporcionar un par clave = valor. 'a' fue completamente arbitrario (es solo la primera letra que se le vino a la mente). Cualquiera de esos otros funciona igual de bien (como a = "cadena", nombre = "cadena", etc. "a" = "cadena" no funcionará). – Noah