2016-05-30 3 views
0

私は小さなデータベースで毎日のETLを実行するレガシーRコードにいくつかのPUT要求を挿入しようとしています。これらの要求はMailChimpの電子メールメーリングリストにユーザーを追加します。私はR(特にHTTRパッケージ)を受け入れる構文にフォーマットされた私のGETリクエストを取得することができましたR httr put requets

GET( "https://us10.api.mailchimp.com/3.0/lists/list_id_XXXXX/members/MEMBER_HASH_#######"、クエリ=リスト(APIキー= 'XXXXXXXXXXXXXXを'))

しかし、私がPUTリクエストで同様のことをしようとすると、この単純な構文は機能しません.API KEYやリクエストされたパラメータをURLに直接渡すことはできません。 GETに使用したのと同じ構文を使用すると401エラーが発生します。

私はCONFIGオプションを使用して、PUTリクエストを取得するためにBODYのAPIキー(AUTHENTICATEまたはADD_HEADERSを使用)と要求されたパラメータを渡す必要があると考えていますが、動作する構文を取得できません"[email protected]"、 " - - 認証( "anystring"、 "XXXXXXXXXXXXXX"、タイプ= "基本") PARMS <「[{ "EMAIL_ADDRESS"

AUTH <: - これは400エラーを返しますstatus_if_new」: "加入"}]」 PUT( "https://us10.api.mailchimp.com/3.0/lists/list_id_XXXXX/members/MEMBER_HASH_#######" は、config = AUTH、本体= PARMS、エンコード= "JSON")

誰がよりフラッシュOに私を指すことができる場合驚くべき例ですが、私の構文のトラブルシューティングに役立つ私のエラーメッセージの詳細を取得する方法のヒントだけでも大きな助けになるでしょう。

ありがとうございました。

答えて

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"