我已经完成了一些套接字工作,我必须发送一个请求,因为我想要一个回复,但我需要在C#中编写一些东西,它只会调用一个旧网页,大约需要10秒钟才能响应,并且不等待响应(故障将通过DB调用标记)。
有一种简单的方法吗?
答案 0 :(得分:5)
您可以在System.Net.WebClient类上使用Async方法:
var webClient = new System.Net.WebClient();
webClient.DownloadStringAsync("your_url")
答案 1 :(得分:5)
试试这个主题:Async HttpWebRequest with no wait from within a web application
(这种方法有时被称为“火与忘记”)
答案 2 :(得分:1)
答案 3 :(得分:-1)
你的意思是:
HttpWebRequest req = (HttpWebRequest) WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
resp.Close();
答案 4 :(得分:-1)
使用Webrequest类,但启动请求asynchronously。 这基本上是在另一个线程中运行请求,您也可以自己执行。
答案 5 :(得分:-1)
如果您想通过POST添加参数,您也可以使用它(如果您不需要,只需忽略响应)。这会以字典的形式获取参数,但可以轻松修改为以您想要的任何方式工作。
private String DownloadData(String URL, Dictionary<String, String> Parameters)
{
String postString = String.Empty;
foreach (KeyValuePair<string, string> postValue in Parameters)
{
foreach (char c in postValue.Value)
{ postString += String.Format("{0}={1}&", postValue.Key, postValue.Value); }
}
postString = postString.TrimEnd('&');
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(URL);
webRequest.Method = "POST";
webRequest.ContentLength = postString.Length;
webRequest.ContentType = "application/x-www-form-urlencoded";
StreamWriter streamWriter = null;
streamWriter = new StreamWriter(webRequest.GetRequestStream());
streamWriter.Write(postString);
streamWriter.Close();
String postResponse;
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
using (StreamReader responseStream = new StreamReader(webResponse.GetResponseStream()))
{
postResponse = responseStream.ReadToEnd();
responseStream.Close();
}
return postResponse;
}