下面的代码块说明了如何使用TCP和网络流发送HTTP请求.但是,无论应用什么过滤,每个请求都会持续消耗60秒的平均时间.无论是单个数据还是数千个数据到达,延迟都保持不变.为什么它会持续60秒?是否没有缩短此时间段的选项,或者是否有无需等待即可立即获取数据的设置?
// Specify the server and port
string server = "xxx.com";
int port = 80;
// Specify the HTTP request
string httpRequest = "POST /ApiPrefixNameHere/ControllerNameHere/ActionNameHere HTTP/1.1\r\nHost: xxx.com\r\naccept: text/plain\r\nContent-Type: application/json-patch+json\r\nContent-Length: 27\r\n\r\n{\"ParameterNameHere\":\"1580\"}";
// Create a TcpClient
using (TcpClient tcpClient = new())
{
await tcpClient.ConnectAsync(server, port);
using (NetworkStream networkStream = tcpClient.GetStream())
using (StreamWriter writer = new(networkStream, Encoding.ASCII))
using (StreamReader reader = new(networkStream, Encoding.ASCII))
{
// Send the HTTP request
await writer.WriteAsync(httpRequest);
await writer.FlushAsync();
// Read the response
string response = await reader.ReadToEndAsync();
// Display the response
Console.WriteLine("Response: " + response);
}
}
我对这些老方法不太熟悉.我try 了NoDelay()和各种超时配置等策略,但没有一个被证明是有效的.
首先感谢您的帮助.
在@jonskeet的回答后编辑
// add `Connection: close`
string httpRequest = "POST /ApiPrefixNameHere/ControllerNameHere/ActionNameHere HTTP/1.1\r\nHost: xxx.com\r\naccept: text/plain\r\nContent-Type: application/json-patch+json\r\nConnection: close\r\nContent-Length: 28\r\n\r\n{\"ParameterNameHere\":\"1580\"}";