おはやし日記

テーマ……バイク←プログラミング←旅

URLエンコード・デコード[Automate]

Android向け自動化アプリ"Automate"の関数で,後々使えると思ったものがあったのでメモっておきます。

主な使用目的としてはDictionary型のデータをapplication/x-www-form-urlencodedの形にエンコードする関数(とデコードする関数)です。これを使えばHTTPリクエストを送る際のパラメータをコンパクトに扱えるはずです。

urlEncode

urlEncode ⋅ Automate ⋅ LlamaLab

text urlEncode(value, charset)

valueDictionary型のデータ,あるいは任意のデータ。charset文字コードで,指定しなければUTF-8になります。


クエリパラメータに変換

valueDictionary型のデータを入れるとクエリパラメータに変換してくれます。

value = {"name": "ohayashi", "age": 30,  "job": "忍者"}

これをエンコードすると

text = urlEncode(value)

logに出力した結果は以下の通りです

name=ohayashi&age=30&job=%E5%BF%8D%E8%80%85

Flow等のスクショは以下のような感じ

先ほどのFlowを次のように簡略化します。log出力についての記述は省略します。以下でも同様に文字だけで表します。

value = {"name": "ohayashi", "age": 30,  "job": "忍者"}
text = urlEncode(value)

->

text = "name=ohayashi&age=30&job=%E5%BF%8D%E8%80%85"
//ここでの = は代入ではなく,結果を示しています。

URLには半角英数くらいしか使えないので,日本語とかを渡す際にはなんかこう,うまく変換してやる必要があります。出力の最後の%E5%BF%8D%E8%80%85は「忍者」を表しています。

URLエンコード・デコード|日本語URLをサクッと変換 | すぐに使える便利なWEBツール | Tech-Unlimited←このサイトとかで確認できます。


単純エンコード

また,valueDictionary型以外のものを入れると,単純にURLエンコードしてくれます。簡略化して示します。

value = "ほげ"
text = urlEncode(value)

->

text = "%E3%81%BB%E3%81%92"

array型も入れてみました

value = ["ohayashi", 30, "忍者"]
text = urlEncode(value)

->

text = "ohayashi%2C+30%2C+%E5%BF%8D%E8%80%85"

%2C+はそれぞれ,と空白を表しています。


urlDecode

urlDecode ⋅ Automate ⋅ LlamaLab

text2 urlDecode(text1, charset)

引数のtext1はデコードしたい文字列,charseturlEncodeと同様に文字コードです。

動作

こちらも簡略化します。先ほどクエリパラメータにしたものを入れてみます。

text1 = ”name=ohayashi&age=30&job=%E5%BF%8D%E8%80%85”
text2 = urlDecode(text1)

->

text2 = "name=ohayashi&age=30&job=忍者"

まあ,そういうことです。こちらは文字列を受け取ってデコードできるところは戻して文字列にするだけです。


まとめ

Dictionary型変数にパラメータを投入して,urlEncodeで一気にクエリパラメータに変換してあげればHTTPリクエストブロックの記述が楽になるはず!(まだ試していない)

今度は,AutomateでのHTTPリクエストについて書こうと思います。

にほんブログ村 IT技術ブログへ

にほんブログ村 IT技術ブログ IT技術メモへ

ブログランキング・にほんブログ村へ

プライバシーポリシー ・お問い合わせはこちら