HttpClientとプロキシの使用 - 常に407が表示される
2023-10-07 07:45:38
質問
以下はそのコードです。
HttpClient client = null;
HttpClientHandler httpClientHandler = new HttpClientHandler()
{
Proxy = new WebProxy(string.Format("{0}:{1}", proxyServerSettings.Address,
proxyServerSettings.Port),false),
PreAuthenticate = true,
UseDefaultCredentials = false,
};
this.httpClientHandler.Credentials = new NetworkCredential(proxyServerSettings.UserName,
proxyServerSettings.Password);
this.client = new HttpClient(this.httpClientHandler);
そして、最終的にこれを実行すると
HttpResponseMessage httpResponseMessage = this.client.PostAsync(urlToPost, new StringContent(data, Encoding.UTF8, this.mediaType)).Result;
を常に投げます。
リモートサーバーがエラーを返しました: (407) Proxy Authentication 必要です。
これは私には到底理解できません。
IE10 で設定した場合は、同じプロキシが問題なく動作します。
HttpWebRequest
クラスを使用しても問題なく動作します。
どのように解決するのですか?
プロキシの認証情報を設定する場所を間違えています。
httpClientHandler.Credentialsは、プロキシサーバに与える認証情報です。 サーバに与える認証情報です。 に与える認証情報です。これらを間違えると、おそらく 401 か 403 の応答が返ってくるでしょう。
に与えられたクレデンシャルを設定する必要があります。 プロキシ を設定しないと、サーバへの接続が拒否されます。プロキシに提供する認証情報は、サーバに提供するものとは異なるかもしれません。これらを間違えると、407 応答が返されます。407 が表示されるのは、これらを全く設定しなかったからです。
// First create a proxy object
var proxy = new WebProxy
{
Address = new Uri($"http://{proxyHost}:{proxyPort}"),
BypassProxyOnLocal = false,
UseDefaultCredentials = false,
// *** These creds are given to the proxy server, not the web server ***
Credentials = new NetworkCredential(
userName: proxyUserName,
password: proxyPassword)
};
// Now create a client handler which uses that proxy
var httpClientHandler = new HttpClientHandler
{
Proxy = proxy,
};
// Omit this part if you don't need to authenticate with the web server:
if (needServerAuthentication)
{
httpClientHandler.PreAuthenticate = true;
httpClientHandler.UseDefaultCredentials = false;
// *** These creds are given to the web server, not the proxy server ***
httpClientHandler.Credentials = new NetworkCredential(
userName: serverUserName,
password: serverPassword);
}
// Finally, create the HTTP client object
var client = new HttpClient(handler: httpClientHandler, disposeHandler: true);
関連
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み] プロキシサーバーで Git を動かす - "Request timed out" で失敗する
-
[解決済み] cURLでHTTPリクエストを行う(PROXYを使用)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。