Q&A

レスポンス200が返ってきているのに、line notify apiで画像が送信されない

初歩的な質問で申し訳ございません。 色々なサイト巡って解決策探したのですが、一向に画像送信ができません。

前提・実現したいこと

line notifyで画像送信したい

発生している問題・エラーメッセージ

line notifyで画像送信ができない レスポンスは200が返ってくるが、ラインルームにはメッセージしか返ってきていない

該当のソースコード

headers = { #"Content-Type": "application/x-www-form-urlencoded", "Content-Type": "multipart/form-data; boundary=----xxxxTTTT", "Authorization": "Bearer {}".format(token) }

url = "https://notify-api.line.me/api/notify"

session = Session()
session.headers.update(headers)

plt.figure()
plt.plot([1,2])
plt.savefig("sample.jpg")

parameters = {
    "message": "test テスト",
}
files = {
    "imageFile": open("./sample.jpg","rb")
}

try:
    response = session.post(url, params=parameters, files=files)
    print(response)
except (ConnectionError, Timeout) as e:
    print(e)

=> レスポンスは200、ライングループには「test テスト」のメッセージのみ送信されている。

試したこと

補足情報(FW/ツールのバージョンなど)

  • 0
  • 2
  • 549
  • twitter facebook

Content-Type に boundary を指定しているのはおかしいと思います。

import sys
from requests import Session

token = sys.argv[1]
headers = {
    "Authorization": "Bearer {}".format(token)
}

url = "https://notify-api.line.me/api/notify"

session = Session()
session.headers.update(headers)

parameters = {
    "message": "test テスト",
}
files = {
    "imageFile": open("./cat.jpg","rb")
}

try:
    response = session.post(url, params=parameters, files=files)
    print(response)
except (ConnectionError, Timeout) as e:
    print(e)
  • 0

画像のパスが正しく認識されているかが気になるので、files が正しくsession.post(...)にわたせているか確認してみてはどうでしょうか。

あとはhttps://qiita.com/kaonashikun/items/4a4d311e26d8e7483a95 のように簡単なプログラムをコピーしてきて、自分のプログラムに何か問題があるのか、そうではないのかを試してみるといいと思います。

  • 0
本当によろしいですか? question.vm