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

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

新規登録して質問してみよう
ただいま回答率
85.47%
C#

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

Q&A

0回答

1173閲覧

HttpHeaders.Add()関数の使い方が知りたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2022/11/09 10:22

編集2022/11/10 08:26

提示コードですが///のコード下記の例外が発生します。これはどう対処したらいいのでしょうか?
提示コードはMastonetAPIを用いて認証インスタンスを行いたいのですが上手くデータが返ってきていないせいか.jsonでエラーが発生するようです。原因としてはmstdn.jpではHTTPリクエストでユーザーエージェントを入れないとアクセス拒否される仕様のようです。この問題の解決のためUser-agent を操作してgoogle chormを指定すればよいという情報を得たのですがどう修正すればいいのでしょうか?リファレンスを見ましたが引数に何を入れたらいいかわかりません。

例外
例外がスローされました: 'System.IO.FileNotFoundException' (ClassLibrary1.dll の中) 例外がスローされました: 'System.IO.FileNotFoundException' (System.Private.CoreLib.dll の中) 例外がスローされました: 'System.IO.FileNotFoundException' (System.Private.CoreLib.dll の中) 例外がスローされました: 'System.IO.FileNotFoundException' (System.Private.CoreLib.dll の中) 型 'System.IO.FileNotFoundException' の例外が System.Private.CoreLib.dll で発生しましたが、ユーザー コード内ではハンドルされませんでした Could not load file or assembly 'Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. 指定されたファイルが見つかりません。
参考サイト

認証インスタンスサイト: https://mstdn.jp/
A https://kmycode.hatenablog.jp/entry/2017/04/23/113328
B https://github.com/glacasa/Mastonet/blob/main/DOC.md
C https://makky12.hatenablog.com/entry/2017/05/03/201800
エラー: https://ohke.hateblo.jp/entry/2017/04/21/220000
ヒント: https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14236476004
リファレンス: https://learn.microsoft.com/ja-jp/dotnet/api/system.net.http.headers.httpheaders.add?view=net-7.0

利用ライブラリ

Mastonet: https://github.com/glacasa/Mastonet/tree/b04bfdb3cfc1b365b2487c8bbd019e4640293306

環境

Windows 10
visual sutido 2022
.net frameWork

Mastonetライブラリコード

cs

1 2 public abstract class BaseHttpClient : IBaseHttpClient 3 { 4 protected readonly HttpClient client; 5 public AppRegistration? AppRegistration { get; set; } 6 public Auth? AuthToken { get; set; } 7 8 #region Instance 9 private string instance = string.Empty; 10 public string Instance 11 { 12 get 13 { 14 return instance; 15 } 16 set 17 { 18 CheckInstance(value); 19 instance = value; 20 } 21 } 22 23 private void CheckInstance(string instance) 24 { 25 var notSupportedList = new List<string> { "gab.", "truthsocial." }; 26 var lowered = instance.ToLowerInvariant(); 27 if (notSupportedList.Any(n => lowered.Contains(n))) 28 { 29 throw new NotSupportedException(); 30 } 31 } 32 33 #endregion 34 35 protected BaseHttpClient(HttpClient client) 36 { 37 this.client = client; 38 } 39 40 #region Http helpers 41/////////////////////////////////////////////////////////////////////////////////////////////// 42 private void AddHttpHeader(HttpRequestMessage request) 43 { 44 Debug.WriteLine("AuthToken.AccessToken"); 45 request.Headers.Add("Authorization", "107.0.0.0"); 46 47 if (AuthToken != null) 48 { 49 Debug.WriteLine("AuthToken.AccessToken " + AuthToken.AccessToken); 50 request.Headers.Add("Authorization", "Bearer " + AuthToken.AccessToken); 51 } 52 } 53/////////////////////////////////////////////////////////////////////////////////////////////// 54 protected async Task<string> Delete(string route, IEnumerable<KeyValuePair<string, string>>? data = null) 55 { 56 string url = "https://" + this.Instance + route; 57 if (data != null) 58 { 59 var querystring = "?" + String.Join("&", data.Select(kvp => kvp.Key + "=" + kvp.Value)); 60 url += querystring; 61 } 62 63 using (var request = new HttpRequestMessage(HttpMethod.Delete, url)) 64 { 65 AddHttpHeader(request); 66 using (var response = await client.SendAsync(request)) 67 return await response.Content.ReadAsStringAsync(); 68 } 69 } 70
ライブラリ利用側コード

cs

1using Mastonet; 2using Mastonet.Entities; 3using System; 4using System.Collections.Generic; 5using System.Diagnostics; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9 10namespace ConsoleApp2 11{ 12 internal class Program 13 { 14 private async static Task f() 15 { 16 17 var authClient = new AuthenticationClient("mstdn.jp"); 18 ///////////////////////////////////////////////////////////////////// 19 var appRegistration = await authClient.CreateApp("test", Scope.Read | Scope.Write | Scope.Follow); 20 ///////////////////////////////////////////////////////////////////// 21 var url = authClient.OAuthUrl(); 22 23 ProcessStartInfo pi = new ProcessStartInfo(); 24 pi.FileName = url; 25 pi.UseShellExecute = true; 26 27 Process.Start(pi); 28 29 string str = Console.ReadLine(); 30 var authURL = authClient.OAuthUrl(str); 31 32 /* 33 var auth = await authClient.ConnectWithPassword(id, pass); 34 var client = new MastodonClient(appRegistration, auth); 35 */ 36 } 37 38 39 public async static void t() 40 { 41 await f(); 42 } 43 44 static void Main(string[] args) 45 { 46 t(); 47 48 49 Console.ReadKey(); 50 } 51 } 52} 53

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/11/09 12:33

複垢使ってるよね? ハンドル名に見覚えがある。その書き方は見たことある。
退会済みユーザー

退会済みユーザー

2022/11/09 13:45

はい、複垢です。 2chで叩かれ怖くなったので一旦垢を消しました。
atcoderyellow

2022/11/13 08:33

5ch, teratailは初心者を攻撃するプラットフォームである。
退会済みユーザー

退会済みユーザー

2022/11/13 11:40

そうなんですね.、知らなかったです
atcoderyellow

2022/11/13 12:19

私もサイバーいじめを受けている。 私はこのいじめが改善しなかったら、Qiitaにいじめの記録を晒す予定である。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問