Enterprise Blue Ocean ◮

神谷町RPAブログ

  • Blue Prism 初級者向け
    • Blue Prism を 無料で利用する 方法はこちら
    • Blue Prism の Blue Prism 事始め!オンボーディングの記事はこちら
    • Blue Prism で Excelを操作 する記事はこちら
  • Blue Prism、ちょっと進んだコンテンツ☆
    • Blue Prism の ベストプラクティス 記事はこちら
    • Blue Prism の 逆引きナレッジ wiki こちら
    • Blue Prism を リアルタイムで起動する 方法はこちら
  • RPA、そもそも論!
    • Youtube で、あらためて振り返る RPA とは?・・・はこちら☆

Blue Prism で Web API を呼ぶときに、応答(Response)がバイナリだったときのための Tips☆

4連休だからツシマ、やってると思った?

 

…残念☆

それどころじゃなかったんだぁ。。

f:id:EnterpriseBlueOcean:20200723212904p:plain

(2度目)

 

Blue Prism で Web API を呼ぶときに、応答(Response)がバイナリだったら、ちょっと困ること

Blue Prism は 6.4 から Web API という機能が

追加されました。これを使うことで、

Blue Prism から REST および SOAP API

を呼び出すのがとても簡単になりました。

www.ebocean.work

 

しかし、現時点の Web API 機能には、

若干、残念なところもあります。

応答(HTTP Response)がテキストである

ことを大前提としていることです。

 

たとえば、GET リクエストに対して、

ファイルをバイナリで返してくるような

REST API があったりすると、、

  1. REST API を呼ぶ(GET)
  2. ファイルがバイナリ形式で Response として返ってくる
  3. Blue Prism の Web API がバイナリをテキストに変えてしまう(たぶん Unicode かなんか)
  4. ファイルをテキストエディタで開いたみたいな、変な文字列が返される

 

…こうなってしまうと、

いくつかの情報が失われ、

この(ファイルをテキストエディタで開いたみたいな)

文字列をバイナリに変えても、

ファイルは復元されません。

 

おのれ、ブ〇カス!

(八つ当たり)

 

HTTP Request の応答(Response)をバイナリとして取得する

これでは困るので、

Web API の Response をバイナリ(binary)として受け取り、

そこから base64 にエンコーディングするなり、

なんなりとできるようにします。

 

いったいどうすればいいんだ。。

 

……

………

 

…お困りのようですキョねぇ。 

f:id:EnterpriseBlueOcean:20200723220722p:plain


あ、あなたは、

プ リ ズ マ ン

プ リ ズ ム マ ン !

 

…黙って聞いていれば、

まったくもって貧弱キョ~。

 

Web API 機能に限界?

バイナリが返されると困る?

 

取るに足らない泣き言は

聞きたくないキョ~。

 

そ ん な も の は

コ ー ド ス テ ー ジ で

ゴ リ 押 し す れ ば

 

なんとでもなるキョ~!

www.ebocean.work

 

ゴリ押しした。

コードステージを配置し、

f:id:EnterpriseBlueOcean:20200723221246p:plain

 

名前空間を宣言。

f:id:EnterpriseBlueOcean:20200723221322p:plain

 

コードはこんな感じにしました。

'コードステージで Web API を呼び出すことで、レスポンスをテキストにせず受け取る

Dim Req As HttpWebRequest

Dim Res As HttpWebResponse

Dim MemStream As New MemoryStream()

Dim ResStrm As IO.Stream = Nothing

 

Try

    Req = HttpWebRequest.Create(URL)

    Req.Headers.Add("Authorization", "Bearer " & Access_Token)

    Res = Req.GetResponse()

    ResStrm = Res.GetResponseStream()

    ResStrm.CopyTo(MemStream)

    File_binary = MemStream.ToArray

    File_base64 = System.Convert.ToBase64String(File_binary)

Catch ex As Exception

    Throw ex

Finally

    If ResStrm IsNot Nothing Then ResStrm.Dispose()

    MemStream.Close

End Try

 

ベアラー(Bearer)トークンを Authorization

ヘッダに入れて、GET リクエストを送るだけ。

単純である。

www.ebocean.work

 

Response はバイナリとして(File_binary)、

また base64 エンコーディングした形で出力

(File_base64)されます。

 

やったぜ。

 

まとめ

  • コードステージでゴリ押し!強力無比と言わざるを得ない
  • しかし乱用は禁物。自分でコードを書くというのは、思った以上にリスクを考慮する必要がある

 

必殺技は、毎回、

ぶっ放すもんじゃー

ないってことだぜ!