質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

3360閲覧

LINENotifyでC#を使って画像を送りたい

sago8385

総合スコア6

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/12/11 12:16

編集2022/08/09 07:39

前提・実現したいこと

LINENotifyでC#を使って「警告」と文字が出たときにメッセージと画像を送りたいです。しかし、メッセージは送れるのですが、画像送る際にエラーが出てしまいます。わかる方がいればエラーのなくしかたを教えてください。

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

byte[] resData = wc.UploadFile(url, img); の場所で リモート サーバーがエラーを返しました: (400) 要求が不適切です と出ます。

該当のソースコード

C#

プログラム

cs

1if (check1) 2 { 3 4textBox4.Text = "警告"; 5textBox4.Foreground = Brushes.Black; 6 7using (Stream stream = new FileStream("test.png", FileMode.Create)) 8{ 9PngBitmapEncoder encoder = new PngBitmapEncoder(); 10encoder.Frames.Add(BitmapFrame.Create(bmpBuffer)); 11encoder.Save(stream); 12} 13var token = "token"; 14var img = "C:\test.png"; 15 16var url = "https://notify-api.line.me/api/notify"; 17var enc = Encoding.UTF8; 18var mes = "message=" + HttpUtility.UrlEncode("テスト", enc); 19 20 21using (var wc = new WebClient()) 22{ 23wc.Encoding = enc; 24wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); 25wc.Headers.Add("Authorization", "Bearer " + token); 26var response = wc.UploadString(url, mes); 27byte[] resData = wc.UploadFile(url, img); 28}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/12/16 23:01 編集

> まだ回答を求めています ということですが、質問に回答したところまったく別の質問に変わったので、戻すようコメントしたけれど応じず、運営に削除依頼して認められました。 回答される方はそれを踏まえ、完成まで延々とサポートを求められることを前提に回答してください。
sago8385

2019/12/17 05:24 編集

戻すようにコメントしたように見えなかったのですがそういう意味のコメントだったんですね。そちらの意図に気づかず不快な思いをさせてしまいすみませんでした。今後このようなことのないようにします。大変申し訳ありませんでした。
Zuishin

2019/12/17 07:58 編集

「このようなひどいことはやめてください」と「元に戻してください」は確かに違う言葉でしたね。これはうっかりしていました。日本の国際化が進んでいることを忘れていました。
guest

回答1

0

はじめまして。私も同様にC#.NETでLINE Notifyの画像の通知方法を調べてました。
インターネット上にはほとんど情報が無く、APIドキュメントを読み、試行錯誤した結果、下記のコードで無事に解決したので共有します。
投稿主さんのコードとはかなり書き方が違うので、下記にソースコード全てを記載します。
環境:MSVS2022, C#.NET, WinFormApp, .NET Framework 4.8

Form1.cs

C#

1using System; 2using System.IO; 3using System.Net.Http; 4using System.Net.Http.Headers; 5using System.Windows.Forms; 6 7namespace LINENotifyImage 8{ 9 public partial class Form1 : Form 10 { 11 public Form1() 12 { 13 InitializeComponent(); 14 } 15 16 private void button1_Click(object sender, EventArgs e) 17 { 18 string token = ""; // Please set Token. 19 string msg = "Notify test"; 20 string ApiUrl = "https://notify-api.line.me/api/notify"; 21 FileStream img = File.OpenRead(@"C:\Windows\Web\Screen\img100.jpg"); 22 var http = new HttpClient(); 23 { 24 http.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("multipart/form-data")); 25 http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); 26 var body = new MultipartFormDataContent(); 27 body.Add(new StringContent(msg), "message"); 28 if (img != Stream.Null) 29 { 30 var imgFile = new StreamContent(img); 31 body.Add(imgFile, "imageFile", "*"); 32 } 33 http.PostAsync(ApiUrl, body); 34 } 35 } 36 } 37}

FileStream imgのファイルパスは適宜変更してください。
私のコードが参考になれば幸いです。

投稿2022/08/08 22:39

reinforchu

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問