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

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

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

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

Q&A

受付中

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

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0回答

0グッド

0クリップ

866閲覧

投稿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

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/11/09 13:07依頼された後にこの質問は修正されています

こちらの質問が複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

SurferOnWww

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にいじめの記録を晒す予定である。

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

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

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

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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