問題タブ [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.

0 投票する
3 に答える
2144 参照

silverlight - System.Net.Http パッケージを Windows Phone 7.1 Silverlight プロジェクトにインストールできない

Nuget を使用して「Microsoft ASP.NET Web API クライアント ライブラリ」をインストールし、Windows Phone 7.1 XNA および Silverlight プロジェクトで使用する最新の System.Net.Http アセンブリを取得しました。WP7.1 XNA プロジェクトには問題なくインストールできますが、WP7.1 Silverlight プロジェクトにはインストールできません。パッケージ マネージャー コンソールから新しく作成した WP7.1 Silverlight プロジェクトに直接インストールしようとしたところ、次のエラー応答が返されました。

System.Net.Http は WP7.1 Silverlight プロジェクトと互換性がありますか? もしそうなら、どのように動作させることができますか?

ありがとう

0 投票する
1 に答える
3217 参照

http-post - HttpClient.PostAsJsonAsync を使用した Post Scalar データ型

HttpClient を使用して ASP .Net Web API を呼び出し、アクションを正常に呼び出しています。また、カスタム オブジェクトをアクションに POST することもできます。

今私が直面している問題は、整数、文字列などのスカラーデータ型を投稿できないことです...

以下は、アクションを呼び出すコントローラーとアプリケーション コードです。

// 呼び出すテスト アプリケーション

// Web API のコントローラーとアクション

Northwind データベースの「Category」テーブルを表すカスタム オブジェクトを投稿すると、すべてが正常に機能しますが、Integer や String などのスカラー データを投稿できません。

文字列データ型を投稿すると、次の例外が発生します

{"メッセージ":"要求 URI に一致する HTTP リソースが見つかりませんでした ' http://localhost:49931/api/Supplier/RemoveCategory/ '.","MessageDetail":"コントローラ 'Supplier' でアクションが見つかりませんでしたリクエストに一致します。"}

誰でも私を案内できますか?

0 投票する
1 に答える
1055 参照

.net - WinRT/Win8 で HttpClient に応答ヘッダーがありません

Windows 8 アプリで HttpClient を使用していますが、応答でカスタム ヘッダーを意図的に隠しているようです。例えば:

受信した応答には、 「Sample-Header: 123」というカスタム ヘッダーがあります。

応答コンテンツのヘッダーには、値が「123」の「Sample-Header」が含まれていると思います

ヘッダーを列挙しても、カスタム ヘッダーは見つかりません。

0 投票する
2 に答える
812 参照

json - HttpClient を使用する REST API ですが、JSON 応答が不明です

WebApi httpclient を使用して、REST Web サービスに対して使用する .net API ライブラリを構築しています。

REST サービスは JSON を返します。

私が抱えている問題は、1 つの要求に対して、異なる JSON 形式が返される可能性があることです。

クエリが成功した場合、それを保持するために強力な c# 型を作成した JSON 配列が返されます。

ReadAsAsync< T > メソッドを使用してコンテンツから取得します。

リクエストに不正な API キーが含まれていた場合、または別のエラーが発生した場合、残りのサービスは status=error などのいくつかのプロパティと説明メッセージなどを含む JSON オブジェクトを返します。

どのフォーマットが戻ってくるのかわからないので、ReadAsAsync< T > メソッドを使用することはできません。JSON linq ライブラリについてはよくわかりませんが、JSON 応答を JSON ホルダー オブジェクトに入れ、そこに status=error があるかどうかを確認し、正しい逆シリアル化を使用して強力な型にする方法はありますか。

JRawオブジェクトに保存できるようですが、ここからどこに行くべきかわかりません。

どうもありがとう。

0 投票する
2 に答える
8682 参照

c# - タイムアウトとユーザーキャンセルを区別する

HttpClient組み込みのタイムアウト機能があり(すべて非同期であるにもかかわらず、つまり、タイムアウトはhttpリクエスト機能に直交していると見なすことができるため、一般的な非同期ユーティリティで処理できますが、それは別として)、タイムアウトが開始されると、TaskCanceledException(ラップされたAggregateException)。

TCEには、CancellationTokenに等しいが含まれていCancellationToken.Noneます。

今、私が自分のものを提供HttpClientし、CancellationTokenそれを使用して、操作が終了する(またはタイムアウトする)前に操作をキャンセルすると、まったく同じTaskCanceledException、再び。を取得しCancellationToken.Noneます。

スローされた例外だけを見て、例外CancellationTokenをチェックするコードに自分自身をアクセス可能にすることなく、タイムアウトが要求をキャンセルしたかどうかを判断する方法はまだありますか?

PSこれはバグであり、CancellationTokenどういうわけか間違って修正された可能性がありCancellationToken.Noneますか?カスタムCancellationTokenを使用してキャンセルされたTaskCanceledException.CancellationToken場合、そのカスタムトークンと同じになると思います。

編集 問題をもう少し明確にするために、オリジナルCancellationTokenSourceにアクセスして、タイムアウトとユーザーキャンセルを簡単に区別できます。

origCancellationTokenSource.IsCancellationRequested == true

ただし、例外からを取得するCancellationTokenと、間違った答えが返されます。

((TaskCanceledException)e.InnerException).CancellationToken.IsCancellationRequested == false

ここに、人気のある需要のための最小限の例があります。

0 投票する
1 に答える
1025 参照

dotnet-httpclient - C# で Post メソッド HttClient を使用しているときにリクエストがタイムアウトしました

私のアプリケーションでは、コードを使用して、各投稿の間に 2 秒間隔で URL を使用してコンテンツを Web プロキシに送信しています。以下のコードで投稿するメッセージは静的文字列として指定されていますが、元のアプリケーション コードでは動的になります。

しかし、プロキシに連絡すると、以下の例外が発生します。メッセージはしばらく経ちますが、最終的にはこの例外が発生します。

GetResponse タイムアウト ---> System.TimeoutException: GetResponse タイムアウト ---> System.Net.WebException ---> System.Net.WebException: Microsoft の System.Net.HttpWebRequest.GetResponse() で操作がタイムアウトしました.Http.HttpWebRequestTransportStage.HttpTransportAsyncResult.PopulateWebResponseSync(WebRequest request, IAsyncResult result) at Microsoft.Http.HttpWebRequestTransportStage.HttpTransportAsyncResult.PopulateWebResponse(HttpTransportAsyncResult self, IAsyncResult result, Func`3 getResponse) --- 内部例外スタック トレースの終了 --- - -- 内部例外スタック トレースの終了 --- Microsoft.Http.AsyncResult.End[TAsyncResult](IAsyncResult 結果、Boolean throwException) で Microsoft.Http.HttpWebRequestTransportStage.EndProcessRequestAndTryGetResponse(IAsyncResult 結果、HttpResponseMessage&)Response, Object& state) at Microsoft.Http.HttpWebRequestTransportStage.ProcessRequestAndTryGetResponse(HttpRequestMessage request, HttpResponseMessage& response, Object& state) at Microsoft.Http.HttpStageProcessingAsyncResult.NextRequest(HttpStageProcessingAsyncResult self) --- 内部例外スタック トレースの終了 --- Microsoft. Http.HttpStageProcessingAsyncResult.Complete(HttpStage ステージ、例外 e) で Microsoft.Http.HttpStageProcessingAsyncResult.NextRequest(HttpStageProcessingAsyncResult 自身) で Microsoft.Http.HttpClient.Send(HttpRequestMessage リクエスト) で Microsoft.Http.HttpClient.Send(HttpMethod メソッド、Uri uri 、RequestHeaders ヘッダー、HttpContent コンテンツ) を Microsoft.Http.HttpMethodExtensions.Method(HttpClient クライアント、HttpMethod メソッド、Uri uri、HttpContent 本体) で Microsoft.Http.HttpMethodExtensions.Method(HttpClient クライアント、HttpMethod メソッド、文字列 uri、HttpContent 本体)

しかし、このプロキシは別のプロキシへのリダイレクトにすぎません。だから私もそれを直接試しました。そこでは、これを 2 ~ 3 回正常に実行できましたが、その後別の例外が生成されました。もう一度やり直しましたが、今回は最初の試行自体に例外がありました。しばらく待ってから再試行しましたが、驚くべきことに、2〜3回は通過し、再び例外が発生しました. 今回取得している例外は異なり、これは...

Microsoft.Http.HttpStageProcessingException ---> System.Net.WebException ---> System.Net.WebException: 基になる接続が閉じられました: 接続が予期せず閉じられました。System.Net.HttpWebRequest.GetResponse() で Microsoft.Http.HttpWebRequestTransportStage.HttpTransportAsyncResult.PopulateWebResponseSync(WebRequest 要求、IAsyncResult 結果) で Microsoft.Http.HttpWebRequestTransportStage.HttpTransportAsyncResult.PopulateWebResponse(HttpTransportAsyncResult 自己、IAsyncResult 結果、Func3 getResponse) --- End of inner exception stack trace --- at Microsoft.Http.AsyncResult.End[TAsyncResult](IAsyncResult result, Boolean throwException) at Microsoft.Http.AsyncResult.End[TAsyncResult](IAsyncResult result) at Microsoft.Http.AsyncResult1. Microsoft.Http.HttpWebRequestTransportStage.EndProcessRequestAndTryGetResponse (IAsyncResult 結果、HttpResponseMessage& 応答、Object& 状態) での End (IAsyncResult 結果) Microsoft.Http.HttpWebRequestTransportStage.ProcessRequestAndTryGetResponse(HttpRequestMessage 要求、HttpResponseMessage& 応答、Object& 状態) で Microsoft.HttpStageProcessingAsyncResult。 NextRequest(HttpStageProcessingAsyncResult self) --- 内部例外スタック トレースの終了 --- Microsoft.Http.HttpStageProcessingAsyncResult.Complete(HttpStage ステージ、例外 e) で Microsoft.Http.HttpStageProcessingAsyncResult.NextRequest(HttpStageProcessingAsyncResult self) で Microsoft.Http.HttpStageProcessingAsyncResult ..ctor(HttpStageProcessingAsyncState 状態、AsyncCallback コールバック、オブジェクト ユーザー) Microsoft.Http.HttpClient で。Send(HttpRequestMessage リクエスト) at Microsoft.Http.HttpClient.Send(HttpMethod メソッド、Uri uri、RequestHeaders ヘッダー、HttpContent コンテンツ) at Microsoft.Http.HttpClient.Send(HttpMethod メソッド、Uri uri、HttpContent コンテンツ) at Microsoft.Http.HttpMethodExtensions .Method(HttpClient クライアント、HttpMethod メソッド、Uri uri、HttpContent 本体) Microsoft.Http.HttpMethodExtensions.Method(HttpClient クライアント、HttpMethod メソッド、文字列 uri、HttpContent 本体) で Microsoft.Http.HttpMethodExtensions.Post(HttpClient クライアント、文字列 uri) 、HttpContent 本体)Microsoft.Http.HttpMethodExtensions.Post (HttpClient クライアント、文字列 uri、HttpContent 本体) の Http.HttpMethodExtensions.Method (HttpClient クライアント、HttpMethod メソッド、文字列 uri、HttpContent 本体)Microsoft.Http.HttpMethodExtensions.Post (HttpClient クライアント、文字列 uri、HttpContent 本体) の Http.HttpMethodExtensions.Method (HttpClient クライアント、HttpMethod メソッド、文字列 uri、HttpContent 本体)

私は過去数日間この問題に取り組んでおり、いくつかの記事やスタックオーバーフローの質問も読んだことがありますが、何も役に立ちませんでした。前もって感謝します...

0 投票する
2 に答える
1232 参照

.net - 実行中に非同期 httpclient からの同時リクエストの数を確認するにはどうすればよいですか?

次のような単純なコンソール アプリケーションがあります。

ここでは、10 個の非同期 Web 要求を開始し、要求が完了したときに応答コードを収集して一覧表示します。

  1. 質問: VS2012 を使用してアプリをデバッグし、実行中の任意の時点で発生している同時 Web 要求の数を特定することはできますか?

理由は、次の場所で変更できることがわかったからですApp.config

しかし、これが実際に機能しているかどうかを判断する良い方法はありません。

  1. サーバーはこの制限を設定しますか?

  2. OS はこの制限を設定しますか?

  3. このアプリ構成および/または .NET はこの制限を設定しますか?

0 投票する
2 に答える
2759 参照

asynchronous - HttpClientタスクがキャンセルされました

HttpClientを使用して、以下のコードを使用してメッセージをRESTサービスに非同期で記録しようとしています。

注:GetRequestMessageはHttpRequestMessageを返します。

しかし、「タスクがキャンセルされました」というエラーが表示されます。

何か案は?

0 投票する
1 に答える
21257 参照

c# - FormCollectionからのデータを使用して非同期HttpClientPOSTリクエストを作成する

Asp.Net MVC 4プロジェクトを実行しており、APIサービスへの内部要求(プロキシなど)を探しています。

これは、私のコントローラーでのインデックスメソッドの外観です。PostAsyncの部分で立ち往生しています。

「application/x-form-urlencoded」「body」コンテンツをPostAsyncPOSTメソッドに渡したい。ただし、「bodyはHttpContentタイプではありません」というエラーが表示されます。

キャストも変換もできません。今何?

ここで私が間違っていることを教えてください。

エリック

0 投票する
2 に答える
2321 参照

c# - Web API HttpClientを使用する場合のログイン、アクション、およびログアウトを一般化する方法

HttpClient (別名Web APIクライアント)を使用してRESTfullサービスを利用しています。サービスでは、各操作でセッションを確立し(ログインを介して)、その後破棄する(ログアウトを介して)必要があります。したがって、サービスAを消費するための呼び出しは次のようになります(擬似コード)

私の質問は、セットアップ、ログイン、およびログアウトをさまざまな操作に簡単に再利用するにはどうすればよいですか?Action <>を実行するメソッドを作成する必要があります。作成する場合、操作が順番に行われるようにするにはどうすればよいですか?