タグ付けされた質問 「dotnet-httpclient」

NuGetのHttpClientパッケージの一部であるSystem.Net.Http.HttpClientライブラリ、または.NET 4.5ライブラリを参照します。

6
HttpClientがタイムアウトしたことを確認するにはどうすればよいですか?
私の知る限り、具体的にはタイムアウトが発生したことを知る方法はありません。私は正しい場所を探していませんか、それとももっと大きなものを見逃していますか? string baseAddress = "http://localhost:8080/"; var client = new HttpClient() { BaseAddress = new Uri(baseAddress), Timeout = TimeSpan.FromMilliseconds(1) }; try { var s = client.GetAsync("").Result; } catch(Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.InnerException.Message); } これは次を返します: 1つ以上のエラーが発生しました。 タスクがキャンセルされました。

4
HttpClientリクエストへのカスタムヘッダー
HttpClientリクエストにカスタムヘッダーを追加するにはどうすればよいですか?PostAsJsonAsyncメソッドを使用してJSONを投稿しています。追加する必要があるカスタムヘッダーは "X-Version: 1" これは私がこれまでに行ったことです: using (var client = new HttpClient()) { client.BaseAddress = new Uri("https://api.clickatell.com/"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "xxxxxxxxxxxxxxxxxxxx"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = client.PostAsJsonAsync("rest/message", svm).Result; }

3
.Net 4.5の非同期HttpClientは、集中的な負荷のあるアプリケーションにとって悪い選択ですか?
私は最近、非同期の方法で生成できるHTTP呼び出しのスループットをテストするための単純なアプリケーションと、従来のマルチスレッドアプローチを作成しました。 アプリケーションは、事前定義された数のHTTP呼び出しを実行でき、最後にそれらを実行するために必要な合計時間を表示します。テスト中、すべてのHTTP呼び出しはローカルIISサーバーに対して行われ、小さなテキストファイル(サイズは12バイト)を取得しました。 非同期実装のコードの最も重要な部分を以下に示します。 public async void TestAsync() { this.TestInit(); HttpClient httpClient = new HttpClient(); for (int i = 0; i < NUMBER_OF_REQUESTS; i++) { ProcessUrlAsync(httpClient); } } private async void ProcessUrlAsync(HttpClient httpClient) { HttpResponseMessage httpResponse = null; try { Task<HttpResponseMessage> getTask = httpClient.GetAsync(URL); httpResponse = await getTask; Interlocked.Increment(ref _successfulCalls); } …

2
httpclient呼び出しからコンテンツ本文を取得する方法は?
httpclient呼び出しの内容を読み取る方法を理解しようとしていますが、取得できないようです。取得する応答ステータスは200ですが、返される実際のJsonに到達する方法がわかりません。これで十分です。 以下は私のコードです: async Task<string> GetResponseString(string text) { var httpClient = new HttpClient(); var parameters = new Dictionary<string, string>(); parameters["text"] = text; Task<HttpResponseMessage> response = httpClient.PostAsync(BaseUri, new FormUrlEncodedContent(parameters)); return await response.Result.Content.ReadAsStringAsync(); } そして、私はそれをメソッドから呼び出すだけです: Task<string> result = GetResponseString(text); そして、これは私が得るものです response Id = 89, Status = RanToCompletion, Method = "{null}", Result = "StatusCode: …

14
System.Net.Http 4.2.0.0の奇妙な問題が見つかりません
私は奇妙な問題を抱えています。 Cosmos DBに関連する機能のラッパークラスを備えた単純なクラスライブラリプロジェクト(完全な.NET Framework、4.6.1)があります。したがって、このプロジェクトに「Microsoft.Azure.DocumentDB」NuGetパッケージ1.19.1を追加しました。それ以外に、「Newtonsoft.Json」NuGetパッケージ10.0.3と、いくつかの「Microsoft.Diagnostics.EventFlow。*」NuGetパッケージへの参照があります。 これまでのところ、すべてがエラーなしでコンパイルされます。 しかし、ラッパークラス(単純なService Fabricステートレスサービス(完全な.NET Framework 4.6.1)から消費)に到達したらすぐに、次のコード行を実行してみます。 _docClient = new DocumentClient(new Uri(cosmosDbEndpointUrl), cosmosDbAuthKey); 実行時にこの奇妙なエラーが発生します: System.IO.FileNotFoundException occurred HResult = 0x80070002 Message = Could not load file or assembly 'System.Net.Http、Version = 4.2.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'またはその依存関係の1つ。システムは、指定されたファイルを見つけることができません。 Source = StackTrace:at Microsoft.Azure.Documents.Client.DocumentClient.Initialize(Uri serviceEndpoint、ConnectionPolicy connectionPolicy、Nullable 1 desiredConsistencyLevel) at Microsoft.Azure.Documents.Client.DocumentClient..ctor(Uri serviceEndpoint, String authKeyOrResourceToken, ConnectionPolicy …

3
.net 4.5のHttpClientでCookieを応答から外そうとするのに苦労しています
正常に動作する次のコードがあります。応答からCookieを取得する方法がわかりません。私の目標は、リクエストにCookieを設定し、レスポンスからCookieを取得できるようにしたいことです。考え? private async Task<string> Login(string username, string password) { try { string url = "http://app.agelessemail.com/account/login/"; Uri address = new Uri(url); var postData = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("username", username), new KeyValuePair<string, string>("password ", password) }; HttpContent content = new FormUrlEncodedContent(postData); var cookieJar = new CookieContainer(); var handler = …

3
HttpClientでawaitを使用した非同期呼び出しが返されない
C#Win8 CPのxaml ベースのMetroアプリケーションの内部から電話をかけています。この呼び出しは単にWebサービスをヒットし、JSONデータを返します。 HttpMessageHandler handler = new HttpClientHandler(); HttpClient httpClient = new HttpClient(handler); httpClient.BaseAddress = new Uri("http://192.168.1.101/api/"); var result = await httpClient.GetStreamAsync("weeklyplan"); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(WeeklyPlanData[])); return (WeeklyPlanData[])ser.ReadObject(result); これはでハングしますawaitが、http呼び出しは実際にはほとんどすぐに戻ります(フィドラーで確認)。これはawait無視されたかのようにハングアップするだけです。 質問する前に -はい-プライベートネットワーク機能がオンになっています。 これがハングする理由はありますか?

4
オブジェクトをHttpClient.PostAsyncに渡し、JSON本文としてシリアル化するにはどうすればよいですか?
私が使用しているSystem.Net.Http、私はウェブ上でいくつかの例を見つけました。私はPOSTリクエストを行うためにこのコードを作成することができました: public static string POST(string resource, string token) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(baseUri); client.DefaultRequestHeaders.Add("token", token); var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("", "") }); var result = client.PostAsync("", content).Result; string resultContent = result.Content.ReadAsStringAsync().Result; return resultContent; } } すべて正常に動作しています。しかし、POSTメソッドに3番目のパラメータであるdata。というパラメータを渡したいとします。データパラメータは次のようなオブジェクトです。 object data = …

5
HttpRequestExceptionからStatusCodeを取得するにはどうすればよいですか?
私はおそらくここで明白な何かを見逃しています。 メッセージ文字列に含まれるHttpClientスローHttpRequestExceptionを使用していStatusCodeます。 どうすればそれにアクセスできますStatusCodeか? 編集:詳細、私は急いでこの質問を書きました。 HttpClientWebApiプロジェクト内の別のAPIにアクセスするために使用しています。はい、私はなぜ私が呼んでいるのか知っていEnsureSuccessStatusCode()ます。404や403などのエラーをダウンストリームに伝播したいと思います。 私が欲しかったのは、一貫HttpRequestExceptionしHttpResponseExceptionてカスタムを使用するように変換することExceptionFilterAttributeでした。 残念ながら、HttpRequestExceptionメッセージ以外に使用できる追加情報はありません。私はStatusCode生の(intまたはenum)形式で発見したいと思っていました。 私はどちらかができるように見えます: メッセージを使用してステータスコードを切り替えます(bleh) または、EnsureSuccessStatusCodeのバージョンを作成して、実際に使用できる例外をスローします。

6
HttpClientヘッダーを追加すると、いくつかの値を持つFormatExceptionが生成されます
これは、Googleクラウドメッセージングに対するコーディングのコンテキスト内で発生しましたが、他の場所でも当てはまります。 次のことを考慮してください。 var http = new HttpClient(); http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("key=XXX"); そして var http = new HttpClient(); http.DefaultRequestHeaders.Add("Authorization", "key=XXX"); どちらもFormatExceptionを生成します。 System.FormatException:値key = XXX 'の形式が無効です。 解決策は、等号を削除することです。 リフレクターを掘り下げると、新しいヘッダー値を追加するときに実行される検証と解析のコードがたくさんあることがわかります。なぜこれがすべて必要なのですか?このクライアントは私たちの邪魔にならないだけではいけませんか? この値の追加が成功するように、等号をどのようにエスケープしますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.