4

ユーザー エージェントが定数文字列の場合は、[Headers("User-Agent: Awesome Octocat App")]それを設定するために使用できます。

ただし、私のユーザー エージェントはメソッドによって生成されます (デバイスと OS のバージョンが含まれるため)。つまり、Headers属性内に配置することはできません。

もう 1 つの方法は、動的ヘッダーのセクションで説明されているとおりですが、これは私にとってグローバル ヘッダーであるため、最適とは言えません。このヘッダーを 60 以上の API メソッドに手動で追加したくありません。

どうすればこれを行うことができますか?サポートされているシナリオですか? カスタム HttpClient を使用することは、許容できる解決策です (可能な場合)。

私の目的に役立つ可能性のある製品を知っていれば、他の同様の製品にもオープンです.

4

1 に答える 1

7

実行時にデフォルトのヘッダーを設定するには、インスタンスでDefaultRequestHeadersプロパティを使用できます。HttpClient

このようなものが動作します:

// This example uses http://httpbin.org/user-agent, 
// which just echoes back the user agent from the request.
var httpClient = new HttpClient
{
    BaseAddress = new Uri("http://httpbin.org"), 
    DefaultRequestHeaders = {{"User-Agent", "Refit"}}
};
var service = RestService.For<IUserAgentExample>(httpClient);
var result = await service.GetUserAgent(); // result["user-agent"] == "Refit"

// Assuming this interface
public interface IUserAgentExample
{
    [Get("/user-agent")]
    Task<Dictionary<string, string>> GetUserAgent();
}
于 2014-12-19T23:25:34.673 に答える