LINE Messaging API の画像URL マルチバイトは送れない?
LINE Messaging APIの画像送信でつまずいた話。
【問題】
LINE Messaging APIで画像URL指定するとき、マルチバイト(日本語)を含むことができなくて、エラーが出てしまった。
サーバー:heroku
【経緯】
下記のようなソースコードで画像を送信するプログラムを組んでいた。
Python 3.8
image_message = ImageSendMessage(
)
呼出先
@app.route('/pokemon/<pokemon>')
def pika(pokemon):
ちなみにブラウザからURLを叩くと、画像は問題なく表示される。
しかし、プログラムを叩くと、下記のようなエラーが。
ソースコードを下記のように変更してみる。
image_message = ImageSendMessage(
)
エラーが出なくなり、プッシュ通知がきた。
もちろん、test.pngは存在しないので、画像がない通知が送られてくる。
【解決方法】
マルチバイトの文字はURLエンコードをして、URLとくっ付けてあげると上手くいきました。
test = urllib.parse.quote(テスト)
image_message = ImageSendMessage(
)
もちろん、urlが全てシングルバイトなら問題はない。