【问题标题】:equivalence of -d parameter in curl in httr package of RR的httr包中curl中的-d参数等价
【发布时间】:2016-01-14 15:22:17
【问题描述】:

我正在关注 R 中 opencpu 包的 official manual。在第 4.3 章调用函数它使用 curl 来测试 API:

curl http://your.server.com/ocpu/library/stats/R/rnorm -d "n=10&mean=100"

样本输出为:

/ocpu/tmp/x032a8fee/R/.val
/ocpu/tmp/x032a8fee/stdout
/ocpu/tmp/x032a8fee/source
/ocpu/tmp/x032a8fee/console
/ocpu/tmp/x032a8fee/info

我可以使用curl 获得类似的结果,但是当我尝试使用R 中的httr 包发送这个http 请求时,我不知道如何复制结果。这是我尝试过的:

resp <- POST(
  url = "localhost/ocpu/library/stats/R/rnorm",
  body= "n=10&mean=100"
)
resp

输出是:

Response [HTTP://localhost/ocpu/library/stats/R/rnorm]
  Date: 2015-10-16 00:51
  Status: 400
  Content-Type: text/plain; charset=utf-8
  Size: 30 B
No Content-Type header found.

我想我不明白 httr 中 curl -d 参数的等价性是什么,如何才能正确?

【问题讨论】:

  • body=list(n=106, mean=100)
  • @Bamgf 你考虑过接受答案吗?

标签: r curl httr opencpu


【解决方案1】:

试试这个:)

library(httr)
library(jsonlite)

getFunctionEndPoint <- function(url, format) {
    return(paste(url, format, sep = '/'))
}

resp <- POST(
    url = getFunctionEndPoint(
        url = "https://public.opencpu.org/ocpu/library/stats/R/rnorm",
        format = "json"),
    body = list(n = 10, mean = 100), 
    encode = 'json')

fromJSON(rawToChar(resp$content))

【讨论】:

  • 通过将 url"https://public.opencpu.org/ocpu/library/stats/R/rnorm" 更改为 "localhost/ocpu/library/stats/R/rnorm" 来测试你的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
相关资源
最近更新 更多