如何使用 system.net.http 库正确添加 HttpRequestHeaders
How to properly add HttpRequestHeaders using system.net.http library
我用 header 使用 windows.web.http; 库创建了一个 HttpRequestMessage:
var request = base.CreateHttpRequestMessage();
request.Headers.Add("SESSION", SessionId);
return request;
并在发送 SendRequestAsync() 之后; ,我能够成功得到响应。
但在我的例子中,我需要使用 system.net.http; 库,代码相同:
var request = base.CreateHttpRequestMessage();
request.Headers.Add("SESSION", SessionId);
return request;
但是当我调用 SendAsync() 时; ,我收到未经授权的回复。
有谁知道是什么导致了这个问题?
var source = new CancellationTokenSource(timeout)
var response = await _client.SendAsync(request, source.Token)
.ConfigureAwait(false);
注意: 我尝试在 windows.web.http[= 上为两者手动设置相同的有效 SessionId 47=] 没问题,但在 system.net.http 上未经授权。
我如何初始化我的 HttpClient:
private HttpClientHandler handler;
handler = new HttpClientHandler();
private HttpClient _client;
_client = new HttpClient(handler)
参考Link:https://docs.microsoft.com/en-us/dotnet/api/system.net.http?view=netframework-4.7.2
https://docs.microsoft.com/en-us/uwp/api/windows.web.http
请求Header格式:
windows.web.http:
system.net.http:
谢谢。
system.net.http 的一个缺点是
不缓存请求。不发送的服务器
Cache-Control
可能是潜在问题。
在使用Fiddler调试请求后,我发现我请求的cookie是空的,所以我通过添加cookie而不是添加header来解决这个问题。
CookieContainer.Add(request.RequestUri, new Cookie("SESSION", SessionId));
我用 header 使用 windows.web.http; 库创建了一个 HttpRequestMessage:
var request = base.CreateHttpRequestMessage();
request.Headers.Add("SESSION", SessionId);
return request;
并在发送 SendRequestAsync() 之后; ,我能够成功得到响应。
但在我的例子中,我需要使用 system.net.http; 库,代码相同:
var request = base.CreateHttpRequestMessage();
request.Headers.Add("SESSION", SessionId);
return request;
但是当我调用 SendAsync() 时; ,我收到未经授权的回复。 有谁知道是什么导致了这个问题?
var source = new CancellationTokenSource(timeout)
var response = await _client.SendAsync(request, source.Token)
.ConfigureAwait(false);
注意: 我尝试在 windows.web.http[= 上为两者手动设置相同的有效 SessionId 47=] 没问题,但在 system.net.http 上未经授权。
我如何初始化我的 HttpClient:
private HttpClientHandler handler;
handler = new HttpClientHandler();
private HttpClient _client;
_client = new HttpClient(handler)
参考Link:https://docs.microsoft.com/en-us/dotnet/api/system.net.http?view=netframework-4.7.2
https://docs.microsoft.com/en-us/uwp/api/windows.web.http
请求Header格式:
windows.web.http:
谢谢。
system.net.http 的一个缺点是
不缓存请求。不发送的服务器
Cache-Control
可能是潜在问题。
在使用Fiddler调试请求后,我发现我请求的cookie是空的,所以我通过添加cookie而不是添加header来解决这个问题。
CookieContainer.Add(request.RequestUri, new Cookie("SESSION", SessionId));