【问题标题】:R. RCurl 400 Bad RequestR. RCurl 400 错误请求
【发布时间】:2018-08-16 08:13:39
【问题描述】:

我尝试向 API 发送请求,使用 RCurl 库。

我的代码:

start = "2018-07-30"
end = "2018-08-15"

api_request <- paste("https://api-metrika.yandex.ru/stat/v1/data.csv?id=34904255&date1=",
                     start,
                     "&date2=",
                     end,
                     "&dimensions=ym:s:searchEngine&metrics=ym:s:visits&dimensions=ym:s:<attribution>SearchPhrase&filters=ym:s:<attribution>SearchPhrase!~'some|phrases|here'&limit=100000&oauth_token=OAuth_token_here", sep="")
s <- getURL(api_request)

而且每次我尝试这样做时,如果我改用 getUrlContent,我都会得到响应“错误 400”或“错误请求”。当我在浏览器中打开这个 url 时 - 它工作正常。 我仍然找不到这个问题的任何解决方案,所以如果有人对此有所了解 - 请帮助我,好心人=)

【问题讨论】:

  • 你找到解决办法了吗? Y.Metrica API 遇到了同样的问题

标签: r rcurl geturl


【解决方案1】:

如果 URL 正确,您可以使用多种方法。首先,您可以将以下参数添加到getURL 函数中。将参数followlocation 设置为等于TRUE 允许跟随服务器作为HTTP 标头一部分返回的任何“Location:”标头。处理是递归的,PHP 将跟随任何“Location:”标头。

> s <- getURL(url1, .opts=curlOptions(followlocation = TRUE))

如果这不起作用,另一种方法是通过调用htmlParse 方法而不是getURL 来使用XML

> library(XML)
> s <- htmlParse(api_request)

另一种方法是使用httr 包并调用GET 函数:

> library(httr)
> s <- GET(api_request)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多