我自定义一个函数,使用POST方式请求获取数据。
[code]PartTrackList_API <- function(CarNun, CarId){
url <- 'Report/PartTrackList/Search'
payload <- list(RptTimeCtrl.BeginTime = '2018-08-30 00:00:00',
RptTimeCtrl.EndTime = '2018-08-31 00:00:00',
rows = 200,
page = 1,
OrgAndCarList.Text = '',
OrgAndCarList.OrgId = 1,
OrgAndCarList.CarNun = CarNun,
OrgAndCarList.CarId = CarId,
DistanceTime.SelectedValue = 30)
PartTrackList <- POST(str_c(TopGPS_url, url),
add_headers(.headers = headers),
set_cookies(.cookies = cookies),
body = payload,
encode ="form", verbose(), accept_json()) %>%
content("raw") %>%
str_conv("utf-8") %>%
fromJSON() %>% `[[`(2) %>%
sapply(., unlist)
PartTrackList[row.names(PartTrackList)=="platenum"] -> 车牌号码
PartTrackList[row.names(PartTrackList)=="platecolor"] -> 车牌颜色
PartTrackList[row.names(PartTrackList)=="speed"] -> 速度
PartTrackList[row.names(PartTrackList)=="longitude"] -> 经度
PartTrackList[row.names(PartTrackList)=="latitude"] -> 纬度
PartTrackList[row.names(PartTrackList)=="mileage"] -> 行驶里程_公里
PartTrackList[row.names(PartTrackList)=="position"] -> 地址
PartTrackList[row.names(PartTrackList)=="beingtime"] -> 点火时间
PartTrackList[row.names(PartTrackList)=="endtime"] -> 熄火时间
PartTrackList <- data.frame(车牌号码, 车牌颜色, 速度, 经度, 纬度, 行驶里程_公里, 地址, 点火时间, 熄火时间, stringsAsFactors = F)
}[/code]
函数中有2个参数: “carnum”, “carid”
测试此函数可以正常的运行,并返回数据(POST 请求回JSON格式,我解析成数据框)
有一百多个 “carnum”, “carid” 需要放入 parttracklist_API 函数中运行, 我就用 mapply : m_part <- mapply(parttracklist_API, carlist$carnum, carlist$carid)
这个 m_part 可以正常运行, 后台看到POST请求正常,但是无数据。
后 发现单独使用 parttracklist_API(carlist$carnum, carlist$carid) 可以正常返回数据,加上 mapply 可以运行,但无数据返回。
这个是什么原因? post 太频繁,速度过快吗?