· 

SalesforceとDropBoxのAPI連携

SalesforceからDropBoxへのファイル連携サンプル

Salesforceの中のファイルをDropBoxに移さなきゃ行けなくなった。

API自体は公開されているが全編英語?!

 

googleに聞いてみるとどこもSDK使ってて中身がわからない。

ということでgoogle翻訳に切り替えてちまちま作ってみました。

 

Base64にエンコードして渡すんだけど上手くいかない・・・

なにやらファイルの実態をbodyに渡さなきゃいけない的なことらしい。

 

でもHttpRequest.setBody(body)ではblob型入らないし???

 

と思ったらちゃんとありました。知らなかったー!

HttpRequest.setBodyAsBlob(body)

 

ということで以下はサンプルコードです。

 

  1. public class DropBoxApi{
  2.     //アクセストークン
  3.     private static String acToken = 'ご自身のアプリのアクセストークン';
  4.     // ファイル作成
  5.     public void createFileInDropbox(){
  6.         HttpRequest req = new HttpRequest();
  7.         req.setEndpoint('https://content.dropboxapi.com/2/files/upload');
  8.         req.setMethod('POST');
  9.         // アクセストークンをセット
  10.         req.setHeader('Authorization', 'Bearer ' + acToken);
  11.         // ファイルの種類がテキストならこっち
  12.         //req.setHeader('Content-Type', 'text/plain; charset=dropbox-cors-hack');
  13.         // ファイルの種類がテキスト以外ならこっち
  14.         req.setHeader('Content-Type', 'application/octet-stream');
  15.         // ファイルの格納先
  16.         req.setHeader('Dropbox-API-Arg','{ "path":"/Salesforce Documents/aaaaa.pdf" }');
  17.         //ファイルの実態
  18.         ContentVersion cv = [SELECT Id
  19.                                    ,VersionData
  20.                              FROM   ContentVersion
  21.                              WHERE  TITLE = '移行ファイル'
  22.                              limit 1];
  23.         //ファイルをbodyに格納
  24.         req.setBodyAsBlob(cv.VersionData);
  25.         //リクエストを送信
  26.         Http http = new Http();
  27.         HTTPResponse res = http.send(req);
  28.     }
  29. }