在R中调用REST API

雷米

我最近发现了dataforseo api,并尝试通过R调用它

library(httr)

username <- '[email protected]'
password <- 'mypassword'

dataforseo_api <- POST('https://api.dataforseo.com/v2/op_tasks_post/$data', 
                authenticate(username,password), 
                body = list(grant_type = 'client_credentials'),
                type = "basic",
                verbose()
               )

这是我收到的消息:

<- HTTP/1.1 401 Unauthorized
<- Server: nginx/1.14.0 (Ubuntu)
<- Date: Sun, 08 Jul 2018 13:31:34 GMT
<- Content-Type: application/json
<- Transfer-Encoding: chunked
<- Connection: keep-alive
<- WWW-Authenticate: Basic realm="Rest Server"
<- Cache-Control: no-cache, must-revalidate
<- Expires: 0
<- Access-Control-Allow-Origin: *
<- Access-Control-Allow-Methods: POST, GET, OPTIONS
<- Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With

您知道我的问题应该到哪里去吗?你能帮忙吗?

哈克

看来您配置不当configconfig=在您的代码中看不到body还的编码不正确。

另外,在API文档中,我什么都没有看到grant_type似乎应该将一系列任务放在那里,例如:

   {882394209:  {'site': 'ranksonic.com', 'crawl_max_pages': 10}}

响应:

{'results_count': 1, 'results_time': '0.0629 sec.', 'results': {'2308949': {'post_id': 2308949, 'post_site': 'ranksonic.com',
 'task_id': 882394209, 'status': 'ok'}}, 'status': 'ok'}

好,所以首先我们需要set_configconfig=

username <- '[email protected]' # fake email
password <- 'vxnyM9s7FAKESeIO' # fake password

set_config(authenticate(username,password), override = TRUE)

GET("https://api.dataforseo.com/v2/cmn_se")
Response [https://api.dataforseo.com/v2/cmn_se]
  Date: 2018-07-08 16:20
  Status: 200
  Content-Type: application/json
  Size: 551 kB
{
    "status": "ok",
    "results_time": "0.0564 sec.",
    "results_count": 2187,
    "results": [
        {
            "se_id": 37,
            "se_name": "google.com.af",
            "se_country_iso_code": "AF",
            "se_country_name": "Afghanistan",
...
GET("https://api.dataforseo.com/v2/cmn_se/$country_iso_code")
Response [https://api.dataforseo.com/v2/cmn_se/$country_iso_code]
  Date: 2018-07-08 15:48
  Status: 200
  Content-Type: application/json
  Size: 100 B
{
    "status": "ok",
    "results_time": "0.0375 sec.",
    "results_count": 0,
    "results": []
GET("https://api.dataforseo.com/v2/cmn_se/$op_tasks_post")
Response [https://api.dataforseo.com/v2/cmn_se/$op_tasks_post]
  Date: 2018-07-08 16:10
  Status: 200
  Content-Type: application/json
  Size: 100 B
{
    "status": "ok",
    "results_time": "0.0475 sec.",
    "results_count": 0,
    "results": []

那是一回事。同样对于POST数据,他们需要您将其指定为json例如encode = "json"从他们的文档:

所有POST数据均应以JSON格式(UTF-8编码)发送。关键字是通过传递任务数组的POST方法发送的。数据应在此POST数组的data字段中指定。我们建议一次最多发送100个任务。

进一步:

当将任务数组发送到数据字段时,使用POST方法完成任务设置。每个数组元素都具有以下结构:

然后继续列出2个必填字段和许多可选字段。

另请注意,您可以使用reset_config()after作为更好的做法。如果您要经常运行,共享或使用多于一台计算机,为了安全和方便起见,我还建议您将凭据放在环境变量中而不是脚本中。

最后的建议是,您可能只想利用他们发布的Python客户端库和大量示例。由于每个新的API请求都是您在R的支持下会在R方面开创的先河,因此仅使用Python进行数据收集就可能会有所回报。

这是一个有趣的API。如果您转至开放数据栈交换,则应考虑与该社区共享它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R中每行data.frame调用REST API

来自分类Dev

在PHP中调用REST API

来自分类Java

解决Rest API调用中的竞争条件

来自分类Dev

从 Azure 中的 REST api 调用发布版本

来自分类Dev

无法在Android中调用REST API

来自分类Dev

如何从 mule 代理中调用 rest api

来自分类Dev

将Date参数传递到REST API调用中-使用R-

来自分类Dev

在twilio调用REST API创建调用中显示不同的号码

来自分类Dev

制定REST API调用

来自分类Dev

从REST API调用木偶

来自分类Dev

调用-ResMethod Rest API

来自分类Dev

在开发过程中在android中调用REST API

来自分类Dev

R中每列的API调用

来自分类Dev

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

来自分类Dev

在R中的mutate语句中调用API

来自分类Dev

调用R中的API(httr包)

来自分类Dev

从apache骆驼的路由构建器中调用rest api的列表

来自分类Dev

通过调用REST API声明ADFS 3.0中的转换

来自分类Dev

node.js 中的 Rest api 调用问题

来自分类Dev

REST API调用以查看查询中的工作项ID

来自分类Dev

如何通过 Hippo CMS 中的 REST API 调用更新内容?

来自分类Dev

如何通过 postman 调用 REST API 在 Azure 中创建索引?

来自分类Dev

在.net / c#中调用Marketo Rest Api的示例代码

来自分类Dev

如何从Azure DevOps扩展中调用Wiki REST Api?

来自分类Dev

如何在C#中调用Azure Rest API

来自分类Java

如何在SpringBoot REST Api中调用覆盖的handleMethodArgumentNotValid?

来自分类Dev

我无法在 flutter 中对特定 url 进行 REST api 调用

来自分类Dev

Android / Java中的Apidaze REST API HTTP POST调用

来自分类Dev

通过Powershell中的REST API调用下载ZIP内容