Android向け自動化アプリ"Automate"の関数で,後々使えると思ったものがあったのでメモっておきます。
主な使用目的としてはDictionary
型のデータをapplication/x-www-form-urlencoded
の形にエンコードする関数(とデコードする関数)です。これを使えばHTTPリクエストを送る際のパラメータをコンパクトに扱えるはずです。
urlEncode
urlEncode ⋅ Automate ⋅ LlamaLab
text urlEncode(value, charset)
value
はDictionary
型のデータ,あるいは任意のデータ。charset
は文字コードで,指定しなければUTF-8
になります。
クエリパラメータに変換
value
にDictionary
型のデータを入れるとクエリパラメータに変換してくれます。
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←このサイトとかで確認できます。
単純エンコード
また,value
にDictionary
型以外のものを入れると,単純に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
はデコードしたい文字列,charset
はurlEncode
と同様に文字コードです。
動作
こちらも簡略化します。先ほどクエリパラメータにしたものを入れてみます。
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リクエストについて書こうと思います。