在httr包中使用POST请求时获取二进制数据

时间:2016-05-24 05:18:06

标签: r httr jsonlite

我在httr库中使用POST函数来获取一些数据,代码如下所示。

library(httr)

url = "https://xxxx:xxx@api.xxx/_search" #omitted for privacy
a = POST(url,body = query,encode = "json")

查询如下附录所示。 a$content给了我一大堆十六进制数字,在我得到一些有用的数据之前我必须使用另一个函数。

最终,我希望使用b = fromJSON(a$content)获取数据框。到目前为止,为了获得我必须使用的任何数据:

chr<-function(n){rawToChar(as.raw(n))}
b = jsonlite::fromJSON(chr(a$content))
data = b$hits$hits$`_source`

考虑到我通过本地函数解析数据以获取最终数据,这似乎效率低下。所以我的问题如下:

  1. 我是否正确使用POST功能来获取查询?
  2. 是否有更高效(更快)的方式将数据存入数据框?
  3. 附录:

    query = '
    {
      "_source": [
        "start","source.country_codes",
        "dest.country_codes"
        ],
        "size": 100,
        "query": {
        "bool": {
        "must": [
        {
        "bool": {
        "must_not": [
        {
        "range": {
        "start": {
        "lte": "2013-01-01T00:00:00"
        }
        }
        },
        {
        "range": {
        "start": {
        "gt": "2016-05-19T00:00:00"
        }
        }
        }
        ]
        }
        }
        ]
        }
      }
    }'
    

1 个答案:

答案 0 :(得分:1)

  1. POST功能看起来不错。

  2. js<-fromJSON(content(a,as="text"))