楼主: fcfc2013
11269 3

[问答] R httr包中的函数连接API 获取数据 [推广有奖]

  • 3关注
  • 1粉丝

已卖:1169份资源

博士生

76%

还不是VIP/贵宾

-

威望
0
论坛币
7223 个
通用积分
6.2147
学术水平
12 点
热心指数
26 点
信用等级
9 点
经验
14348 点
帖子
307
精华
0
在线时间
285 小时
注册时间
2013-2-13
最后登录
2020-2-7

楼主
fcfc2013 发表于 2016-2-3 11:17:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
根据网站开放API的OAut2.0说明:
文档查看地址:
http://wiki.dinghuo123.com/doc/OAuthV2.pdf
获取Access Token:
请求数据包格式,例如:
  1. https://api.dinghuo123.com/v2/oauth2/token?
  2. grant_type=client_credentials&
  3. client_id=*******&
  4. client_secret=*************************&
  5. scope=basic&
  6. userName=*********&
  7. password=*******
复制代码



我将上述的格式以网址形式输入到IE中反馈得到:“code”:200   成功的获取了access_token

  1. {"data":{"access_token":"1b9ea067265*********0a4d21506bbb","expires_in":2592000,"scope":"basic","refresh_token":"10a03459************887e3f7f","create_time":1454468622670},"code":200,"message":"操作成功"}
复制代码


我想使用R的httr包,获取API的授权,进一步的读取所需要的数据。
  1. library(httr)
  2. dh123_token <- Token(authenticate(user, password, type = "basic"))
  3. req <- GET("https://api.dinghuo123.com",
  4.            config(token = dh_123_token))  # 读了下httr包中帮助文档提到主要用 GET, POST等函数。
复制代码

问题:搞不懂该怎么用httr包中的函数编写,为后面调出网站里面具体的数据而获取acces_token;

例如:要获取网站里的订单详情接口
#获取当前用户的某个订单GET - /order/order_detail请求参数
[td]                        
参数名必传默认值类型描述
access_token-string开发者准入标识,调用时必须使用。
orderNum-string单号
logisticsDetailfalseboolean是否加载出库发货信息
paymentDetailfalseboolean是否加载付款详情记录
paymentStatusfalseboolean是否加载付款信息

Demo:                        
请求示例:                                   
  1. GET /v2/order/order_detail.json?orderNum=DH-O-20150203-000001 HTTP/1.1 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 access_token: 188badc12a14e6a79065d7e67ee5a1b8
复制代码

                           
返回示例:                    
  1. HTTP/1.1 200 OK api-version:v2 Content-Type:application/json;charset=utf-8 X-RateLimit-Limit:1000 X-RateLimit-Remaining:996 X-RateLimit-Reset:1422952442894 {"code":200,"data":{"actualMoney":1500,"address":"地址信息2015","addressId":13719,"addressLabel":"公司地址","area":"中国江苏省南京市白下
  2. (省略部分)"phone":"","productTypeCount":0,"provinceId":320000,"remarks":[],"status":1,"type":1,"version":2,"weight":10,"weightUnit":"KG"},"message":"操作成功"}               
复制代码


  能根据上述的 给你 R httr包 中代码的示例  感谢


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:API TTR credential password expires API httr 爬虫 GET

沙发
fcfc2013 发表于 2016-2-4 16:08:51 来自手机
fcfc2013 发表于 2016-2-3 11:17
根据网站开放API的OAut2.0说明:
文档查看地址:
http://wiki.dinghuo123.com/doc/OAuthV2.pdf
连坐沙发的人都没有

藤椅
fcfc2013 发表于 2016-2-16 11:31:56
知乎网友的帮助下解决 连接API问题:

  1. library(httr)
  2. library(dplyr)
  3. library(rjson)
  4. api <- "https://api.dinghuo123.com/v2/oauth2/token?"
  5. grant_type <- "client_credentials"
  6. client_id <- "*****"
  7. client_secret <- "********"
  8. scope <- "basic"
  9. userName <- "*********"
  10. password <- "********"

  11. response_content <- api %>%
  12.   paste0("grant_type=", grant_type) %>%
  13.   paste0("&client_id=", client_id) %>%
  14.   paste0("&client_secret=", client_secret) %>%
  15.   paste0("&scope=", scope) %>%
  16.   paste0("&userName=", userName) %>%
  17.   paste0("&password=", password) %>%
  18.   GET() %>%
  19.   content() # 最后返回的结果是一个json,这里指定的话,会自动识别,json就转为list

  20. access_token <- response_content$data$access_token
  21. refresh_token <- response_content$data$refresh_token

  22. req <- GET(paste0("https://api.dinghuo123.com/v2/order/pull_order.json?transportType=tcp&size=100&loadLog=false&loadDetail=true&loadRemark=true", "&access_token=", access_token))

  23. status_code(req)
  24. content(req,encoding = utf-8)
复制代码


算是给遇到同样问题的网友一个参考吧,同时在这个给提供 帮助的知乎网友感谢。
已有 2 人评分论坛币 热心指数 收起 理由
cheetahfly + 20 精彩帖子
hubifeng? + 5 + 4 热心帮助其他会员

总评分: 论坛币 + 25  热心指数 + 4   查看全部评分

板凳
LebronYeung 发表于 2020-3-20 17:35:12
你好,我想请教下如何用R连接API的事,不知道方不方便加个QQ或者微信

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 00:44