2017-08-24 4 views
2

ここでクライアント変数にヘッダープロパティを追加しようとしています。 C#/ウィンドウフォームの新機能。getAsync(使用ブロック内)のクライアントのヘッダーを追加

using (var client = new HttpClient()) 
using (var response = client.GetAsync(page).Result) 
using (var content = response.Content) { 
      response = content.readAsStringAsync().Result(); 
     } 

上記のコードにヘッダーを追加します。

client.DefaultRequestHeaders.Add("myHeader", "value"); 

どこに配置するのか分かりません。しかし、それは次のコード行でクライアントを範囲外にしているようです。

+1

これらのメソッドの非同期バージョンを呼び出すことは、結果をブロックしようとしているだけではありません。同期的な振る舞いをしたいのであれば、これらの操作の同期バージョンを最初に呼び出すだけです。 – Servy

+1

'' HttpClient'の使い方について[私はブログの投稿があります](https://contrivedexample.com/2017/07/01/using-httpclient-as-it-was-intended-because-you-not/) – Crowcoder

+0

@Servyには、httpクライアントの非同期メソッドを呼び出すときにヘッダーを追加する方法はありませんか? –

答えて

2

コード適切にあなたがスコープにどこ変数が表示されます。

using (var client = new HttpClient()) { 
    client.DefaultRequestHeaders.Add("myHeader", "value"); 
    using (var response = await client.GetAsync(page)) {   
     var result = await response.Content.ReadAsStringAsync(); 
    } 
} 

コメントで述べたように非同期コードに(.Result)をブロックしないようにしてください。

またHttpClient長く生きなければなりません。常に初期化と廃棄パフォーマンスに悪影響を与える可能性があります。

関連する問題