[解決済み] HttpClientを使用してhttpsを呼び出す
2022-04-20 18:49:09
質問
私はこれまで
HttpClient
C# を使って WebApi を呼び出すためのものです。と比べても、とてもすっきりしているように見える。
WebClient
. しかし、私は
Https
を呼び出します。
以下のコードで
Https
を呼び出すことができますか?
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("https://foobar.com/");
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/xml"));
var task = httpClient.PostAsXmlAsync<DeviceRequest>(
"api/SaveData", request);
EDIT 1: 上記のコードはhttpで呼び出す場合は問題なく動作します。しかし、スキームをhttpsに変更すると、うまくいきません。以下は、得られたエラーです。
基礎となる接続が閉じられました。信頼関係を確立できませんでした。 の関係は、SSL/TLS セキュアチャネルになります。
EDIT 2: スキームをhttpsに変更するのは:ステップ1。
<ブロッククオート証明書と公開鍵・秘密鍵をC#で提供するには? をリクエストしてください。
解決方法は?
サーバーがTLS 1.2のような高いTLSバージョンしかサポートしていない場合、クライアントPCがデフォルトで高いTLSバージョンを使用するように設定されていない限り、失敗します。この問題を解決するには、次のコードを追加してください。
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
あなたのコード例を修正すると、次のようになります。
HttpClient httpClient = new HttpClient();
//specify to use TLS 1.2 as default connection
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
httpClient.BaseAddress = new Uri("https://foobar.com/");
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
var task = httpClient.PostAsXmlAsync<DeviceRequest>("api/SaveData", request);
関連
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] コンストラクタ内の仮想メンバー呼び出し
-
[解決済み] Chromeを使用してASP.NET Web APIがXMLの代わりにJSONを返すようにするにはどうすればよいですか?
-
[解決済み] HttpClientリクエストのContent-Typeヘッダーはどのように設定するのですか?
-
[解決済み] SSL/TLSセキュアチャネルの信頼関係を確立できなかった -- SOAP
-
[解決済み] C# Ignore certificate errors?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み] .pfxを.cerに変換する
-
[解決済み] ServerCertificateValidationCallbackの使用に関するベストプラクティス
-
[解決済み] HttpClientで信頼されていないSSL証明書を許可する