diff --git a/Refit.Tests/API/ApiApprovalTests.Refit.DotNet6_0.verified.txt b/Refit.Tests/API/ApiApprovalTests.Refit.DotNet6_0.verified.txt index faa5be175..e702291ea 100644 --- a/Refit.Tests/API/ApiApprovalTests.Refit.DotNet6_0.verified.txt +++ b/Refit.Tests/API/ApiApprovalTests.Refit.DotNet6_0.verified.txt @@ -335,6 +335,8 @@ namespace Refit public System.Collections.Generic.Dictionary? HttpRequestMessageOptions { get; set; } public Refit.IUrlParameterFormatter UrlParameterFormatter { get; set; } public Refit.IUrlParameterKeyFormatter UrlParameterKeyFormatter { get; set; } + public System.Version Version { get; set; } + public System.Net.Http.HttpVersionPolicy VersionPolicy { get; set; } } public static class RequestBuilder { diff --git a/Refit.Tests/API/ApiApprovalTests.Refit.DotNet8_0.verified.txt b/Refit.Tests/API/ApiApprovalTests.Refit.DotNet8_0.verified.txt index bf8a866b8..4d9b1bc27 100644 --- a/Refit.Tests/API/ApiApprovalTests.Refit.DotNet8_0.verified.txt +++ b/Refit.Tests/API/ApiApprovalTests.Refit.DotNet8_0.verified.txt @@ -335,6 +335,8 @@ namespace Refit public System.Collections.Generic.Dictionary? HttpRequestMessageOptions { get; set; } public Refit.IUrlParameterFormatter UrlParameterFormatter { get; set; } public Refit.IUrlParameterKeyFormatter UrlParameterKeyFormatter { get; set; } + public System.Version Version { get; set; } + public System.Net.Http.HttpVersionPolicy VersionPolicy { get; set; } } public static class RequestBuilder { diff --git a/Refit/RefitSettings.cs b/Refit/RefitSettings.cs index e7da59125..b439b731e 100644 --- a/Refit/RefitSettings.cs +++ b/Refit/RefitSettings.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using System.Net; using System.Net.Http; using System.Reflection; using System.Runtime.Serialization; @@ -127,6 +128,12 @@ public Func< /// Optional Key-Value pairs, which are displayed in the property . /// public Dictionary? HttpRequestMessageOptions { get; set; } + +#if NET6_0_OR_GREATER + public Version Version { get; set; } = HttpVersion.Version11; + + public System.Net.Http.HttpVersionPolicy VersionPolicy { get; set; } = HttpVersionPolicy.RequestVersionOrLower; +#endif } /// diff --git a/Refit/RequestBuilderImplementation.cs b/Refit/RequestBuilderImplementation.cs index 59ef3affa..807cafb79 100644 --- a/Refit/RequestBuilderImplementation.cs +++ b/Refit/RequestBuilderImplementation.cs @@ -737,7 +737,9 @@ bool paramsContainsCancellationToken AddHeadersToRequest(headersToAdd, ret); AddPropertiesToRequest(restMethod, ret, paramList); - +#if NET6_0_OR_GREATER + AddVersionToRequest(ret); +#endif // NB: The URI methods in .NET are dumb. Also, we do this // UriBuilder business so that we preserve any hardcoded query // parameters as well as add the parameterized ones. @@ -1032,6 +1034,14 @@ void AddPropertiesToRequest(RestMethodInfoInternal restMethod, HttpRequestMessag #endif } + void AddVersionToRequest(HttpRequestMessage ret) + { +#if NET6_0_OR_GREATER + ret.Version = settings.Version; + ret.VersionPolicy = settings.VersionPolicy; +#endif + } + IEnumerable> ParseQueryParameter( object? param, ParameterInfo parameterInfo,