2016-05-30 42 views
0

我試圖插入一些PUT請求到一些遺留R代碼裏面,我有執行上的一個小數據庫每天ETL。這些請求會將用戶添加到MailChimp中的電子郵件郵件列表中。[R HTTR把requets

我已經能夠讓我的GET請求格式化成語法,R(特別是HTTR包)接受:

GET( 「https://us10.api.mailchimp.com/3.0/lists/list_id_XXXXX/members/MEMBER_HASH_#######」,查詢=名單(apikey = 'XXXXXXXXXXXXXX'))

但是,當我嘗試爲PUT請求執行類似的操作時,此簡單語法無法正常工作 - 您無法直接通過URL直接傳遞API KEY和/或請求的參數。如果我使用與GET相同的語法,則會出現401錯誤。

我相信我需要使用CONFIG選項來傳遞API密鑰(使用AUTHENTICATE或ADD_HEADERS)以及BODY中的請求參數以使PUT請求正常工作,但無法使語法生效 - 這給出了一個400錯誤:

AUTH < - 認證( 「anystring」, 「XXXXXXXXXXXXXX」,類型= 「基本」) PARMS < - 「[{ 「EMAIL_ADDRESS」: 「[email protected]」,「如果任何人都可以指向我一個更加潮紅的o(012),那麼我們可以通過這個方法來指示我:例如,這將是驚人的......但即使只是關於如何得到更多的信息在我的錯誤消息,以幫助我解決我的語法的一些技巧也將是一個很大的幫助。

謝謝。

回答

0

得到從R用戶組郵件列表一些幫助......現在下面的代碼工作,併發送PUT請求API。

auth   <- authenticate("<USER_NAME>", "<API KEY>", type = "basic") 
params  <- list(email_address = email_to_add, status_if_new ="subscribed") 
path   <- "https://us10.api.mailchimp.com/3.0/lists/xxxxxxxx/members/hash_email_to_add" 
path   <- gsub('hash_email_to_add',digest(email_to_add,algo="md5",serialize=F),path) 

PUT(url=path, 
config = auth, 
body = params, 
encode = "json"