C# 调用Http POST Url/服务的更快方法
我用这段代码调用我的web服务,它工作得很好。然而,它很慢。 有什么想法或其他方法可以更快地调用web服务吗C# 调用Http POST Url/服务的更快方法,c#,web-services,http,C#,Web Services,Http,我用这段代码调用我的web服务,它工作得很好。然而,它很慢。 有什么想法或其他方法可以更快地调用web服务吗 WebRequest request = WebRequest.Create("myurl"); request.Method = "POST"; request.Timeout = 5000; request.Proxy = null; string data = string.Format("fromidLinhVuc={0}", 0); request.ContentLength
WebRequest request = WebRequest.Create("myurl");
request.Method = "POST";
request.Timeout = 5000;
request.Proxy = null;
string data = string.Format("fromidLinhVuc={0}", 0);
request.ContentLength = data.Length;
request.ContentType = "application/x-www-form-urlencoded";
var dataStream = new StreamWriter(request.GetRequestStream());
dataStream.Write(data);
dataStream.Close();
WebResponse response = request.GetResponse();
return response;
这可能是您的问题,也可能不是,但您需要使用
块:
WebRequest request = WebRequest.Create("myurl");
request.Method = "POST";
request.Timeout = 5000;
request.Proxy = null;
string data = string.Format("fromidLinhVuc={0}", 0);
request.ContentLength = data.Length;
request.ContentType = "application/x-www-form-urlencoded";
using (var dataStream = new StreamWriter(request.GetRequestStream()))
{
dataStream.Write(data);
}
WebResponse response = request.GetResponse();
return response;
由于此代码返回一个WebResponse
,它实现了IDisposable
,因此调用方可以使用块调用中的此代码,以确保调用了Dispose
。这可能是您的问题,也可能不是,但您需要使用块调用:
WebRequest request = WebRequest.Create("myurl");
request.Method = "POST";
request.Timeout = 5000;
request.Proxy = null;
string data = string.Format("fromidLinhVuc={0}", 0);
request.ContentLength = data.Length;
request.ContentType = "application/x-www-form-urlencoded";
using (var dataStream = new StreamWriter(request.GetRequestStream()))
{
dataStream.Write(data);
}
WebResponse response = request.GetResponse();
return response;
由于此代码返回一个WebResponse
,它实现了IDisposable
,因此调用方可以使用块调用中的此代码,以确保调用了Dispose
。通过这样或那样调用远程Web服务,无法使其更快。在任何情况下,您都必须等待响应,这超出了您的控制范围。所以这里没有办法
您可以做的是异步调用webservice,以便在等待服务响应时继续。虽然这并不能使Web服务更快,但这是非常有益的,这取决于您的具体场景,实际上给人的印象是事情进展得更快:
public async GetMyResponseAsync()
{
WebRequest request = WebRequest.Create("myurl");
request.Method = "POST";
request.Timeout = 5000;
request.Proxy = null;
string data = string.Format("fromidLinhVuc={0}", 0);
request.ContentLength = data.Length;
request.ContentType = "application/x-www-form-urlencoded";
var dataStream = new StreamWriter(request.GetRequestStream());
dataStream.Write(data);
dataStream.Close();
WebResponse response = await request.GetResponseAsync();
return response;
}
那么在你的呼叫代码中,你可能会这样做
...
// Do stuff
var response = GetMyResponseAsync();
// Do more stuff unrelated to 'response'
// Do stuff with 'response'
...
与响应
无关的部分将立即执行,而另一部分将等待响应
可用 通过这样或那样调用远程Web服务是无法使其更快的。在任何情况下,您都必须等待响应,这超出了您的控制范围。所以这里没有办法
您可以做的是异步调用webservice,以便在等待服务响应时继续。虽然这并不能使Web服务更快,但这是非常有益的,这取决于您的具体场景,实际上给人的印象是事情进展得更快:
public async GetMyResponseAsync()
{
WebRequest request = WebRequest.Create("myurl");
request.Method = "POST";
request.Timeout = 5000;
request.Proxy = null;
string data = string.Format("fromidLinhVuc={0}", 0);
request.ContentLength = data.Length;
request.ContentType = "application/x-www-form-urlencoded";
var dataStream = new StreamWriter(request.GetRequestStream());
dataStream.Write(data);
dataStream.Close();
WebResponse response = await request.GetResponseAsync();
return response;
}
那么在你的呼叫代码中,你可能会这样做
...
// Do stuff
var response = GetMyResponseAsync();
// Do more stuff unrelated to 'response'
// Do stuff with 'response'
...
与响应
无关的部分将立即执行,而另一部分将等待响应
可用 “慢”是指web服务的响应不会很快到达吗?是的,我需要大约2或3秒钟才能从web服务获得响应。如果我使用引用,不知何故它工作得很快。但是我有一些理由不添加引用。您有任何调用web服务的解决方案吗@KeithPaynew你说的“引用”是什么意思?你不能通过不同的调用来修复一个缓慢的web服务。您可以异步调用它,并在等待响应时继续在客户端上执行工作,但您必须为异步操作设计应用程序,使其以这种方式工作。所谓“慢”,是指web服务的响应不会很快到达吗?是,从web服务获得响应大约需要2到3秒钟。如果我使用参考资料,它的工作速度会很快。但是我有一些理由不添加引用。您有任何调用web服务的解决方案吗@KeithPaynew你说的“引用”是什么意思?你不能通过不同的调用来修复一个缓慢的web服务。您可以异步调用它,并在等待响应的同时继续在客户机上执行工作,但必须为异步操作设计应用程序,使其以这种方式工作。