Как я слышал, вы можете использовать свойство Version
для HttpClient
, чтобы ориентироваться на окончательную версию HTTP.
using (var httpClient = new HttpClient())
{
var message = new HttpRequestMessage(HttpMethod.Get, @"https://google.com") { Version = new Version(2,0) };
var result = await httpClient.SendAsync(message);
// ...
}
Но когда я смотрю на исходный код в CoreFX, меня это сильно смущает — похоже, он не работает с последней версией HTTP. По крайней мере, я не смог найти ничего полезного для версии 2.0.
string httpVersion = null;
if (state.RequestMessage.Version == HttpVersionInternal.Version10)
{
httpVersion = "HTTP/1.0";
}
else if (state.RequestMessage.Version == HttpVersionInternal.Version11)
{
httpVersion = "HTTP/1.1";
}
// ...
// Create an HTTP request handle.
state.RequestHandle = Interop.WinHttp.WinHttpOpenRequest(
connectHandle,
state.RequestMessage.Method.Method,
state.RequestMessage.RequestUri.PathAndQuery,
httpVersion,
Interop.WinHttp.WINHTTP_NO_REFERER,
Interop.WinHttp.WINHTTP_DEFAULT_ACCEPT_TYPES,
flags);
// WILL USE HTTP/1.1 by default
[DllImport(Interop.Libraries.WinHttp, CharSet = CharSet.Unicode, SetLastError = true)]
public static extern SafeWinHttpHandle WinHttpOpenRequest(
SafeWinHttpHandle connectHandle,
string verb,
string objectName,
string version,
string referrer,
string acceptTypes,
uint flags);
Я смотрю на что-то совершенно не связанное с проблемой?
Upgrade
. - person Jeroen Mostert   schedule 11.04.2018