C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■100426 / )  NET6用にWebClientをHttpClientに変更
□投稿者/ latitude (1回)-(2022/08/09(Tue) 10:15:37)

分類:[C#] 

開発環境:Visual Studio Community 2022 / Windows10
使用言語:C# フォームアプリ

はじめまして、こんにちはlatitudeといいます。

プログラムの内容は、
1.WebClient()を使って
2.JSON形式でデータをWebサーバーにGETで投げ
3.結果をJSON形式で受け取る
というもので下記コードで実際に動作しています。


しかし「WebClientは旧形式」と注意がでるのでHttpClientに変更したいです。
これをどう書き換えたら良いのか。
もとのコードの1行の情報量が私には多くて理解できずにいます。
(シンプルなHttpClientの基本的な使い方は理解できたのですが…)

助言いただけると助かります。
よろしくお願いします。



------------------------------------------------------------------------------------
//ソースコード
System.Collections.Generic.Dictionary<string, string> GetToken(System.IO.FileInfo prvKEY, string svACCOUNT, string cID, string cSECRET)
{
    using (var rsa = System.Security.Cryptography.RSA.Create())
    {
        rsa.ImportFromPem(System.IO.File.ReadAllText(prvKEY.FullName));

        var descriptor = new Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor
        {
            Issuer = cID,
            Claims = new System.Collections.Generic.Dictionary<string, object>() { ["sub"] = svACCOUNT},
            SigningCredentials = new Microsoft.IdentityModel.Tokens.SigningCredentials(new Microsoft.IdentityModel.Tokens.RsaSecurityKey(rsa), "RS256"),
            IssuedAt = System.DateTime.UtcNow,
            Expires = System.DateTime.UtcNow.AddMinutes(60),
        };

        var handler = new System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler();
        var pv = new System.Collections.Specialized.NameValueCollection()
        {
            ["assertion"] = handler.WriteToken(handler.CreateJwtSecurityToken(descriptor)),
            ["cID"] = cID,
            ["cSECRET"] = cSECRET,
        };

        //★↓ここの部分を HttpClientを使用したコードに変えたいです
        using (var wc = new System.Net.WebClient())
        {
            var resText = System.Text.Encoding.ASCII.GetString(wc.UploadValues(@"https://xxxxx.xxx/oauth2", pv));
            return System.Text.Json.JsonSerializer.Deserialize<System.Collections.Generic.Dictionary<string, string>>(resText);
        }
    }
}
-----------------------------------------------------------------

返信 編集キー/


管理者用

- Child Tree -