2014-11-20 6 views
1

내가 미국 인구 지오 코더 배치 주소 API에 액세스하기 위해 노력하고있어, 여기에서 찾을 : 나는 또한 여기 API에 대한 문서를 통과 한 http://geocoding.geo.census.gov/geocoder/게시하고 R에 HTTR를 사용하여 API에서 데이터를 수신

을 : http://geocoding.geo.census.gov/geocoder/Geocoding_Services_API.pdf

고유 한 ID, 번지, 도시, 주, 우편 번호 다음 형식을 사용하여 형식화 된 주소의 배치 csv 파일을 게시하려면 R의 httr 패키지를 사용하려고합니다. RCurl에서 getURL 제대로 작동하지만 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를 사용해야하는지 잘 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다!

+0

을 받고 어떤 오류? 'address100 '이란 무엇입니까? 왜'httr'을 사용하지만'upload_file'을 사용하지 않습니까? http://httpbin.org/post에 게시하여 요청이 올바른지 확인하십시오. – Jeroen

+0

감사! 콘텐츠를 가져 오는 중 (테스트) 요청이 통과했지만 나쁘다고 여겨지는 "null이 아닐 수도 있습니다"라는 단일 문자열이되어 null 응답이 표시되었습니다. R 데이터 객체를 업로드하려고 할 때 upload_file은 파일 경로 만 받아들이므로 RCurl의 fileUpload를 사용했습니다. – Sandy

답변

0

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) 

(또한 "파일"이 아닌 유효한 MIME 형식)은

+0

대단히 감사합니다! 그것은 작동하는 것처럼 보였습니다. 단, address100을 저장된 CSV 파일의 경로로 대체해야했습니다. 이 오류를 반환하는 R 개체를 사용하여 upload_file 사용하여 시도 : Error : is.character (path) TRUE가 아닙니다. upload_file은 파일 경로에서만 작동합니까? RCurl 버전 fileUpload는 제가 이전에 사용했던 것입니다. 이것은 같은 출력을 주지만 R 데이터 객체를 받아 들일 것이라고 생각했지만 실제로는 사용하지 않았을 때 작동하지 않았습니다. 둘의 차이점은 무엇입니까? 내가 이해하는 한, upload_file은 fileUpload의 래퍼입니다. – Sandy

+0

'upload_file'의 핵심은 디스크에있는 _upload_ _file_입니다. 존재하지 않으면 작동하지 않습니다. – hadley