vma*_*k99 6 c# dotnet-httpclient
我正在使用HttpClient将一个GET请求发送到while循环内的服务器
while (cycle < maxcycle)
{
var searchParameters = new ASearchParameters
{
Page = cycle++,
id = getid
};
var searchResponse = await Client.SearchAsync(searchParameters);
}
Run Code Online (Sandbox Code Playgroud)
并且SearchAsync包含
public async Task<AuctionResponse> SearchAsync()
{
var uriString = "Contains a https url with parameters"
var searchResponseMessage = await HttpClient.GetAsync(uriString);
return await Deserialize<AuctionResponse>(searchResponseMessage);
}
Run Code Online (Sandbox Code Playgroud)
事情发生在每个请求之后,在下一个请求开始之前有一个延迟.你可以在提琴手的时间轴上看到这个,也可以在小提琴手中看到每个请求前都有"Tunnel To"example.com:443

我看到这里正在发生两件事。首先,根据反序列化器的不同,可能需要一段时间才能将响应转换回对象。您可能需要计算该步骤的时间,看看这是否不是您花费的大部分时间。其次,SSL 握手(“隧道”的起源)确实需要往返才能建立 SSL 通道。我认为 HttpClient 默认发送一个 Keep-Alive 标头,但您可能想看看它是 A) 未发送还是 B) 被拒绝。如果您为每个请求重新建立 SSL 通道,那么这本身很容易就会花费一百毫秒的时间(取决于服务器/网络负载)。
如果您使用 Fiddler,则可以启用检查 SSL 流量的功能,以查看实际的请求/响应标头是什么。
| 归档时间: |
|
| 查看次数: |
1234 次 |
| 最近记录: |