“如何修复”;HTTP状态为';409冲突';文件(con,“r”)中有错误;

“如何修复”;HTTP状态为';409冲突';文件(con,“r”)中有错误;,r,api,R,Api,当我从Uncotrade下载数据,并试图通过API访问数据,然后将结果保存为本地笔记本电脑上的csv文件时,我收到一条错误消息: cannot open URL 'https://comtrade.un.org/api/get?max=50000&type=C&freq=M&px=HS&ps=201201,201202,201203&r=344&p=842&rg=2&cc=25,26,27,28,29,30,31,32,33,34,

当我从Uncotrade下载数据,并试图通过API访问数据,然后将结果保存为本地笔记本电脑上的csv文件时,我收到一条错误消息:

cannot open URL 'https://comtrade.un.org/api/get?max=50000&type=C&freq=M&px=HS&ps=201201,201202,201203&r=344&p=842&rg=2&cc=25,26,27,28,29,30,31,32,33,34,35,36,37,38&fmt=json': HTTP status was '409 Conflict' Error in file(con, "r") : 
知道发生了什么吗?我没有在所有其他查询中遇到这种情况,只是遇到了一个非常具体的问题。当我在线搜索数据时,我可以看到数据-因此数据是非空的

这就是我获取数据的方式

library(dplyr)
get.Comtrade <- function(url="http://comtrade.un.org/api/get?"
                         ,maxrec=50000
                         ,type="C"
                         ,freq="A"
                         ,px="HS"
                         ,ps="now"
                         ,r
                         ,p
                         ,rg="all"
                         ,cc="TOTAL"
                         ,fmt="json"
)
{
  string<- paste(url
                 ,"max=",maxrec,"&" #maximum no. of records returned
                 ,"type=",type,"&" #type of trade (c=commodities)
                 ,"freq=",freq,"&" #frequency
                 ,"px=",px,"&" #classification
                 ,"ps=",ps,"&" #time period
                 ,"r=",r,"&" #reporting area
                 ,"p=",p,"&" #partner country
                 ,"rg=",rg,"&" #trade flow
                 ,"cc=",cc,"&" #classification code
                 ,"fmt=",fmt        #Format
                 ,sep = ""
  )

  if(fmt == "csv") {
    raw.data<- read.csv(string,header=TRUE)
    return(list(validation=NULL, data=raw.data))
  } else {
    if(fmt == "json" ) {
      #import the raw data
      raw.data<- fromJSON(file=string)
      #choose the particular dataset section of the raw data 
      data<- raw.data$dataset
      #I mean, datasets are also lists
      #that that the list (i.e. the datasets into a vector)
      validation<- unlist(raw.data$validation, recursive=TRUE)
      ndata<- NULL
      #checking if error doesn't happen
      if(length(data)> 0) {
        #show the names
        var.names<- names(data[[1]])
        #paste(data[[1]])
        #bind the data again and transpose
        data<- as.data.frame(t(sapply(data,rbind)))
        ndata<- NULL
        for(i in 1:ncol(data)){
          #doesn't it return a list of true/ false?? - how can i use it as indices?
          data[sapply(data[,i],is.null),i]<- NA
          #bind it col by col for ndata
          ndata<- cbind(ndata, unlist(data[,i]))
        }
        #as.data.frame
        ndata<- as.data.frame(ndata)
        #finally get the colnames
        colnames(ndata)<- var.names
        ndata <- ndata %>% select("cmdCode", "cmdDescE", "period", "periodDesc", "rgDesc", "rtTitle", "ptTitle", "TradeValue")
        colnames(ndata) <- c("Classification_Code", "Classification_Code_Description", "Period", "Period_Date", "X/I", "Reporter", "Partner", "Trade_Value")
      }
      return(list(validation=validation,data =ndata))
    }
  }
}
库(dplyr)
得到,Comtrade
library(dplyr)
get.Comtrade <- function(url="http://comtrade.un.org/api/get?"
                         ,maxrec=50000
                         ,type="C"
                         ,freq="A"
                         ,px="HS"
                         ,ps="now"
                         ,r
                         ,p
                         ,rg="all"
                         ,cc="TOTAL"
                         ,fmt="json"
)
{
  string<- paste(url
                 ,"max=",maxrec,"&" #maximum no. of records returned
                 ,"type=",type,"&" #type of trade (c=commodities)
                 ,"freq=",freq,"&" #frequency
                 ,"px=",px,"&" #classification
                 ,"ps=",ps,"&" #time period
                 ,"r=",r,"&" #reporting area
                 ,"p=",p,"&" #partner country
                 ,"rg=",rg,"&" #trade flow
                 ,"cc=",cc,"&" #classification code
                 ,"fmt=",fmt        #Format
                 ,sep = ""
  )

  if(fmt == "csv") {
    raw.data<- read.csv(string,header=TRUE)
    return(list(validation=NULL, data=raw.data))
  } else {
    if(fmt == "json" ) {
      #import the raw data
      raw.data<- fromJSON(file=string)
      #choose the particular dataset section of the raw data 
      data<- raw.data$dataset
      #I mean, datasets are also lists
      #that that the list (i.e. the datasets into a vector)
      validation<- unlist(raw.data$validation, recursive=TRUE)
      ndata<- NULL
      #checking if error doesn't happen
      if(length(data)> 0) {
        #show the names
        var.names<- names(data[[1]])
        #paste(data[[1]])
        #bind the data again and transpose
        data<- as.data.frame(t(sapply(data,rbind)))
        ndata<- NULL
        for(i in 1:ncol(data)){
          #doesn't it return a list of true/ false?? - how can i use it as indices?
          data[sapply(data[,i],is.null),i]<- NA
          #bind it col by col for ndata
          ndata<- cbind(ndata, unlist(data[,i]))
        }
        #as.data.frame
        ndata<- as.data.frame(ndata)
        #finally get the colnames
        colnames(ndata)<- var.names
        ndata <- ndata %>% select("cmdCode", "cmdDescE", "period", "periodDesc", "rgDesc", "rtTitle", "ptTitle", "TradeValue")
        colnames(ndata) <- c("Classification_Code", "Classification_Code_Description", "Period", "Period_Date", "X/I", "Reporter", "Partner", "Trade_Value")
      }
      return(list(validation=validation,data =ndata))
    }
  }
}