問題タブ [dotnet-httpclient]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - await base.SendAsync 後にカスタム DelegatingHandler が返されない
HttpClient を使用して API コンシューマを構築しています。プロバイダーはコンシューマーがダイジェスト認証を使用して認証する必要があるため、以下のようなカスタム DelegatingHandler を記述する必要があります。
HttpClient を作成し、カスタム DelegatingHandler をメッセージ ハンドラー pineline に追加します。
それを行った後、私の消費者は永久に実行されているように見えます。上記のコード行の await base.SendAsync の後にブレーク ポイントを追加すると、コードが返されないことがわかります。そのため、Digest 承認ヘッダーの詳細を抽出するために、応答が 401 の承認を受けていないかどうかを確認する方法がありません。従来の WebHttpRequest サポート Digest Authenticate を使用して別の API コンシューマー サイトを正常に構築したため、API プロバイダーに問題はありません。
重要な注意: コンシューマをコンソール アプリケーションとして記述するように切り替えると、うまく機能します。それで、よくわかりませんが、非同期モードで実行している場合、ASP.NET スレッドに関連する問題だと思いますか?
私がやっていることは何か間違っていますか?
c# - HttpClient ヘッダーを追加すると、いくつかの値で FormatException が生成されます
これは、Google Cloud Messaging に対するコーディングのコンテキスト内で発生しましたが、他の場所にも当てはまります。
次の点を考慮してください。
と
どちらも FormatException を生成します。
System.FormatException : 値 key=XXX' の形式が無効です。
解決策は、等号を削除することです。
リフレクターを掘り下げると、新しいヘッダー値を追加するときに実行される検証および解析コードがたくさんあることがわかります。なぜこれが必要なのですか?このクライアントは私たちの邪魔をするべきではありませんか?
この値の追加が成功するように、等号をどのようにエスケープしますか?
asp.net-mvc - コンソール アプリ HttpClient が mvc Web API にポスト
Visual Studio 2012 テンプレートから構築された既定の mvc Web API インスタンスがあります。デフォルトの ValuesController に次のルートと post メソッドがあります。MVC サイトは、Post メソッドの内容以外は最初の作成から変更されていません。また、Azure をターゲットにする予定なので、.NET Framework 4.0 を使用しています。
登録方法
および Post メソッド
HttpClient を使用してサービスへの投稿をシミュレートするコンソール アプリケーションを作成しましたが、残念ながら、Post に入ってくる「値」は常に null です。Post メソッドは、HttpClient での PostAsync 呼び出しに続いて正常にヒットします。
渡した StringContent が値に含まれるようにリクエストをマッピングする方法が明確ではありません...
私はMVC Web APIとHttpClientの使用に不慣れです-正しい方向に私を向ける助けがあれば大歓迎です。
c# - Web API アクションから HttpClient を使用して外部 HTTP サービスを呼び出す
.Net Framework 4.5 で実行されている ASP.Net MVC 4 Web Api プロジェクト内から HttpClient を使用して外部サービスを呼び出しています。
サンプル コードは次のとおりです (これは、外部サービスの呼び出しをテストするためのサンプル コードであるため、戻り値は無視してください)。
プライベート メソッドのコードは実際に機能しますが、私が抱えている問題は、コントローラーの Get() が GetResponse() を呼び出しますが、結果を待機せず、結果 = null で戻りをすぐに実行することです。
また、次のように WebClient を使用したより単純な同期呼び出しを使用してみました。
これは正常に動作します。
私は何を間違っていますか?非同期サンプルで Get() がプライベート メソッドの完了を待機しないのはなぜですか?
c# - HttpClientで応答を取得する
HttpClientを使用して、サードパーティのAPI( Rackspace Cloud Files )から応答コンテンツを読み取ろうとしています。これが私がこれまでに持っているものです。コンテンツを取得できないようです。
これにより、「メディアタイプが「text/html」のタイプ「String」のオブジェクトを読み取るために使用できる「MediaTypeFormatter」はありません。」エラー。
Rackspaceのドキュメント(例)に記載されているように、応答の詳細を取得する必要があります。
どうすれば応答を得ることができますか?
ReadAsStringAsyncを使用すると、ページのHTMLソースが提供されます。
ありがとうございました。
c# - .net 4.5でHttpClientを使用してCookieを応答から取得しようとして苦労しています
正常に動作する次のコードがあります。応答から Cookie を取得する方法がわかりません。私の目標は、リクエストに Cookie を設定し、応答から Cookie を取得できるようにすることです。考え?
完全な答えは次のとおりです。
c# - WinRT の UI から HttpClient を呼び出す - 何も起こらない
Windows 8 Metro アプリで Web サイトのコンテンツを取得しようとしています。私はまだ ayn メソッドと wait メソッドについて少し混乱しています。
しかし、これは私が持っているものです:
残念ながら、何も起こりません。デバッグしようとすると、GetAsync() で停止します。
HelloButton_Click 関数も非同期にする必要がありますか?
関数 GetPage() の完了を待っているのに?
GUI スレッドからネットワーク要求を直接呼び出すことはできますか?
c# - x509 証明書を使用した HttpClient リクエストはデバッグでは機能しますが、本番環境では失敗します (403 禁止)
xml を返す単純な rest コマンドを使用して呼び出さなければならないブラック ボックス サービスがあります。
彼らは、IE で実行し、IE の証明書セクションにインストールする必要がある証明書を発行してくれました。彼らの指示に従って、チェーン全体をパスワード付きのpfxとしてエクスポートしました。
証明書が直接発行されたマシンでは、すべてがコードで正常に動作します
(証明書をリソースに保存しましたが、正常にロードされ、開発者のマシンでもファイルからのロードが正常に機能します。)念のため、サーバー上のIEにもインポートしました。明らかに、これは間違った証明書ストアの下にある可能性がありますが、これをグローバルにロードする方法がわかりませんでした。サーバー上の IE でも同じ REST GET が機能し、開発者のマシン上で機能するのと同じように機能します。失敗するのはコードだけです。)
本番環境では、この同じコードが 403 禁止をスローします。
本番環境 (実際にはベータ サーバー) は、実際には開発マシンと同じ nat の背後にあるため、同じ IP が通過するのを見ています。
開発者ボックスではなくサーバーで失敗する理由はありますか?
ありがとう!
c# - XMLシリアライゼーションとクラスエイリアシング? 可能?
私は HttpClient を使用して GetAsync 呼び出しを行っています。次に、 を呼び出して、呼び出しが成功したことを確認していますresponse.ErrorSuccessStatusCode()
。
私はそれから電話しますresponse.Content.ReadAsAsync<WikiResponse>()
。ReadAsAsync が呼び出されるとエラーが発生します。これは、サード パーティの REST サービスが返され、"WikiResponse" ではなく "Response" という XML 応答が返されるためです。この WikiResponse は、さらに別のサード パーティによって作成されました。Response という名前のオブジェクトを作成することはできません。これは、他の DTO と同じ "レベル" にあるがクラス構造が異なる、この名前のクラスが既に存在するためです。
WikiResponse を Response に「適合」させる方法はありますか? XML とクラスの構造は、クラス名を除いて同一です。
早速のお返事ありがとうございます!
アップデート:
クラスで使用しようとし[XmlRoot(ElementName = "Response")]
ましたが、うまくいきませんでした。
これは私が得ているエラーです:
asp.net-mvc-4 - MVC Web API への WebApp ユーザー (Windows 認証) の委任が失敗する
次のサイト構造を持つ IIS 7.5 があります。
WebApp (ASP.NET Forms) = Web サイト (http://WebApp)
WebAPI (MVC 4 Web API) = アプリケーションに変換されたフォルダー (http://WebApp/webapi)
どちらも同じ ApplicationPool で実行されています。
両方の認証設定は同じです。
- ASP.NET 偽装 (認証されたユーザー)
- Windows 認証 (プロバイダー: ネゴシエート)
どちらの web.config も次を定義します。
WebApp は、HttpClient を使用して WebAPI から WebService を呼び出します。
WebAPI は MS Enterprise Library を使用して DB に接続します。
この localy を実行すると、すべて正常に動作します。これを IIS 7.5 サーバーに展開してリモート デバッグを開始すると、Web API の HttpContext 現在のユーザーは、Web アプリケーションにログオンしているユーザーではなく、アプリケーション プール ID になります。ADアカウント(グループ)に基づくセキュリティを使用したいので、もちろんWebAppにログオンしているユーザーにしたいです。
誰でも、これを機能させるためのアドバイスを提供してください。前もって感謝します。