Отправка и получение данных из API с использованием httr в R

Я пытаюсь получить доступ к API адресного адреса геокодера США, который находится здесь: http://geocoding.geo.census.gov/geocoder/

Я также просмотрел документацию по API здесь: http://geocoding.geo.census.gov/geocoder/Geocoding_Services_API.pdf

Я пытаюсь использовать пакет httr в R, чтобы опубликовать пакетный файл csv с отформатированными адресами, используя этот формат: уникальный идентификатор, уличный адрес, город, штат, ZIP. Я пробовал версию запроса с одним адресом, используя getURL из RCurl, и это работает нормально, но postForm, похоже, не передает файл правильно. Код, который я сейчас использую, похоже, правильно отправляет запрос, но я не получаю никаких геокодированных данных обратно.

curlhandle <- handle("http://geocoding.geo.census.gov/geocoder/geographies/addressbatch", 
  cookies = TRUE)

# using fileUpload from RCurl instead of upload_file from httr
upload3  <- fileUpload(contents = address100, contentType = "file")

test <- POST(url="http://geocoding.geo.census.gov/geocoder/geographies/addressbatch", 
  body = list(addressFile = upload3,
         benchmark = "Public_AR_Census2010",
         vintage="Census2010_Census2010"), 
  encode = "multipart",
  handle = curlhandle, 
  followLocation = TRUE,
  verbose = TRUE)

В моем запросе чего-то не хватает? Я не уверен, должен ли я использовать writefunction & writedata в этом случае. Любая помощь будет оценена!

1 ответ

Кажется, у вас странное сочетание RCurl и httr. Вот как бы я написал запрос:

req <- POST(
  "http://geocoding.geo.census.gov/geocoder/geographies/addressbatch", 
  body = list(
    addressFile = upload_file(address100),
    benchmark = "Public_AR_Census2010",
    vintage = "Census2010_Census2010"
  ), 
  encode = "multipart",
  verbose())
stop_for_status(req)
content(req)

(также "файл" не является допустимым типом пантомимы)

Другие вопросы по тегам