【问题标题】:Binary output from getURIAsynchronous from RCurl来自 RCurl 的 getURIAsynchronous 的二进制输出
【发布时间】:2017-05-04 13:51:15
【问题描述】:

根据我调用的 API,我从 getURIAsynchronous 接收不同的对象类型。当我查询 google api 时,我得到字符串向量,但在 Route360 的情况下,响应返回二进制原始。我可以以某种方式强制此函数将其作为普通文本接收吗?

这是一个 Route360 示例请求,其中包含来自其网站的示例 api 密钥:

> url <- "https://service.route360.net/germany/v1/polygon?cfg=%7B%22sources%22%3A%5B%7B%22lat%22%3A52.51%2C%22lng%22%3A13.37%2C%22id%22%3A%22%22%2C%22tm%22%3A%7B%22bike%22%3A%7B%7D%7D%7D%5D%2C%22polygon%22%3A%7B%22values%22%3A%5B300%2C600%2C900%2C1200%2C1500%2C1800%5D%2C%22serializer%22%3A%22json%22%2C%22pointReduction%22%3Atrue%7D%7D&cb=jQuery21409533774398208668_1482154160827&key=YWtKiQB7MiZETbCoVsG6&_=1482154160828"
> response <- getURIAsynchronous(url)
> typeof(response)
[1] "raw"
> head(response)
     [,1]
[1,]   1f
[2,]   8b
[3,]   08
[4,]   00
[5,]   00
[6,]   00

【问题讨论】:

  • FWIW,Route360 现在称为 Targomo。示例请求将是相同的,将 https://service.route360.net/germany/ 替换为 https://api.targomo.com/westcentraleurope/

标签: r rcurl geturl


【解决方案1】:

1F8B 是 GZIP 文件的文件幻数。您可以下载到文件扩展名为“gz”的文件,并使用 R.utils 包中的 gunzip("foo.txt.gz")。或者可能有一种更简单的方法来处理内存中的数据,而无需再次下载。

【讨论】:

  • 是的,它是 gzip,谢谢。您知道如何在不保存、解包、重新加载等操作的情况下即时处理它吗?
【解决方案2】:

直接使用 cURL,我会传递 --compressed 标志。如果没有明确成为 R 用户,我想这可以在 curlOptions 中设置?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多