标签: httr

httr GET 操作无法访问 JSON 响应

我正在尝试从 R 脚本中的 API 调用访问 JSON 响应。API调用成功,我可以在控制台中查看JSON响应。但是,我无法从中访问任何数据。

示例代码段是:

require(httr)

    target <- '#trump'
    sentence<- 'Donald trump has a wonderful toupe, it really is quite stunning that a man can be so refined and elegant'
    query <- url_encode(sentence)
    target <- gsub('#', '', target)
    endpoint <- "https://alchemy.p.mashape.com/text/TextGetTargetedSentiment?outputMode=json&target="
    apiCall <- paste(endpoint, target, '&text=', query, sep = '')

    resp <-GET(apiCall, add_headers("X-Mashape-Key" = sentimentKey, "Accept" = "application/json"))

    stop_for_status(resp)
    headers(resp)
    str(content(resp))
    content(resp, "text")
Run Code Online (Sandbox Code Playgroud)

我遵循了 CRAN(此处)的 httr 快速入门指南以及此堆栈中的示例。

不幸的是,我不断收到“content() 中未使用的参数‘文本’”或“不存在接受一类‘响应’的 content() 定义。有人有什么建议吗?PS 标题将打印,resp$content 将打印原始比特流

json r httr

1
推荐指数
1
解决办法
1743
查看次数

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

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

library(httr)

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

该查询显示在下面的附录中。a$content给了我一大堆十六进制数字,我必须使用另一个函数才能获得一些有用的数据。

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

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

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

  1. 我是否正确使用 POST 函数来获取查询?
  2. 是否有更有效(更快)的方法将我的数据放入数据框中?

附录:

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"
    } …
Run Code Online (Sandbox Code Playgroud)

r httr jsonlite

1
推荐指数
1
解决办法
2101
查看次数

(R) 下载带有直接下载链接的文件,该文件在浏览器中有效,但在 R 中无效

我正在尝试从 WorldPop UK 网站下载数据集中的许多国家/地区的大量文件(不仅仅是小示例)。下载每个文件将非常耗时且乏味。

我对 R 中的下载方法相当熟悉,但我无法让这些下载工作。我知道这是因为下载链接以某种方式通过html运行,但我不擅长html或java。

我阅读了大量有关 httr、RCurl 和 RSelenium 的文章。我更喜欢避免使用 RSelenium 的解决方案,因为我对其他软件包更加熟悉,并且可能共享代码,并且不想每次都设置浏览器(至少这是我的理解)

有人可以帮我解决这个问题吗?

直接下载链接到一个小文本(.txt)文件,该文件在浏览器中工作正常,但在 R 中使用 download.file 或 curl_download 则不行: http://www.worldpop.org.uk/data/files/index.php ?dataset =140&操作=下载&文件=60

例如,包含尼日利亚文件索引的网站(您可以在 html 代码中看到 href= 链接):http://www.worldpop.org.uk/data/files/index.php ?dataset=140&action=dir

在 Chrome 上,查看源代码:http://www.worldpop.org.uk/data/files/index.php? dataset=140&action=dir

下载链接位于我的开发者控制台上的第 558 行和第 559 行之间。

提前致谢!

html php r rcurl httr

1
推荐指数
1
解决办法
1839
查看次数

如何使用令牌在 R 中调用 API

我正在试验 R,我想知道如何使用库 httr 或 rcurl 从 API 获取一些数据。

例如在终端中使用 curl 我可以做到这一点,它让我得到我想要的数据:

curl -X GET "https://some.webpage.com/api/v1/accounts/self/profile" -H "accept: application/json" -H "token-auth: 72124asfin393483feifefi92835w345"
Run Code Online (Sandbox Code Playgroud)

注意:令牌键是随机字符集

不幸的是,当我尝试在 R 中重现它时我失败了,我尝试使用类似的东西:

> library(httr)
> c <- GET("https://some.webpage.com/api/v1/accounts/self/profile?token- auth=72124asfin393483feifefi92835w345"
Run Code Online (Sandbox Code Playgroud)

或这个:

> url = "https://some.webpage.com/api/v1/accounts/self/profile"
> key = "{72124asfin393483feifefi92835w345}"
> a <- GET(url, add_headers(Authorization = paste("Bearer", key, sep = " ")))
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我在 Rstudio 中尝试此操作时,我总是收到此错误:

[1] "'token-auth' has to be provided for authentication."
Run Code Online (Sandbox Code Playgroud)

有关此特定 API 调用的更多信息:

接口信息

这是文档

所以我想我显然在 url 组合上做错了什么,我如何让它与 R 一起工作?我很困惑,我在 R 中找到了一些关于 API 的文档,但没有解释如何使用令牌。谢谢

r access-token httr

1
推荐指数
1
解决办法
2532
查看次数

删除httr,现在无法重新安装,或加载devtools

我试图安装twitteR,但安装失败,说我需要httr> 0.6而我只有0.3.

我试图更新httr.但是,我似乎同时有2个版本,当我使用库(twitteR)时,它仍然说我有httr 0.3并且需要0.6(对不起我没有确切的错误消息了,并且由于这个而无法复制以下问题.)

所以,我删除了httr remove.packages('httr')(这是一个错误).

现在我无法加载devtools

> library(devtools)
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : 
  there is no package called ‘httr’
Error: package or namespace load failed for ‘devtools’
Run Code Online (Sandbox Code Playgroud)

或安装包

install.packages('httr')

'''Some lines skipped'''

Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : 
  there is no package called ‘httr’
Error: package or namespace load failed for ‘devtools’
Execution halted
Run Code Online (Sandbox Code Playgroud)

当我尝试从tarball安装httr时,我得到与上面相同的错误消息R CMD INSTALL.

我很困惑.是时候安装干净的R了吗?

为了将来参考,我如何更新httr?

r devtools httr

0
推荐指数
1
解决办法
2203
查看次数

x %||% list() 中的错误:缺少参数“p”,没有默认值

我正在尝试使用 httr 库获取 100 多个站点的状态,但我不断收到此错误:

Error in x %||% list() : argument "p" is missing, with no default. 
Run Code Online (Sandbox Code Playgroud)

我有一个包含所有站点名称的数据框。这是给我错误的行

for(i in names)
{

  if(i != "")
  {
    URL <- GET(paste("http://",i,"", sep = "" ),set_config(config(ssl_verifypeer = 0L)),timeout(500))

    if(status_code(URL) == "200")
    {
      r <- "Active"
    }
    else
    {
      r <- "Not active"
    }
    r
    print(paste(i,r))
    all_stat <- rbind(all_stat,r) 
  }

}
Run Code Online (Sandbox Code Playgroud)

r httr

0
推荐指数
1
解决办法
2539
查看次数

httr CSV 内容读取为整数而不是双精度

我正在尝试使用 httr 从在线来源导入一个 csv,一切都很好,除了它读取一列作为整数时它应该是双精度导致这些值显示为 NA

我正在使用并遇到以下问题。

getdata <- GET(paste("https://rest.zuora.com/v1/files/",r$FileId, sep = ''), auth) invoice <- content(getdata, type = "text/csv")

  Parsed with column specification:
cols(
  Account.external_id__c = col_integer(),
  Invoice.Amount = col_double(),
  Invoice.Balance = col_integer(),
  Invoice.CreatedDate = col_datetime(format = "")
)
Warning: 171 parsing failures.
 row             col               expected actual
2475 Invoice.Balance no trailing characters    .4 
2726 Invoice.Balance no trailing characters    .71
3197 Invoice.Balance no trailing characters    .3 
3287 Invoice.Balance no trailing characters    .5 
3350 Invoice.Balance no trailing characters    .1 
.... ............... ...................... …
Run Code Online (Sandbox Code Playgroud)

csv r httr zuora

-1
推荐指数
1
解决办法
997
查看次数

使用R调用Web服务:发送数据并将结果表返回到R中

http://snomedct.t3as.org/这是一个Web服务,可以分析英文临床文本,并报告任何可以检测到的概念.
对于例如 - 我有头痛.它会将头痛识别为症状.

现在我想做的是通过R将句子发送到Web服务,并将表格从网页返回到R进行进一步分析.

web-services r rcurl asp.net-web-api httr

-2
推荐指数
1
解决办法
6226
查看次数

标签 统计

httr ×8

r ×8

rcurl ×2

access-token ×1

asp.net-web-api ×1

csv ×1

devtools ×1

html ×1

json ×1

jsonlite ×1

php ×1

web-services ×1

zuora ×1