来自c#程序的HTTP请求,无需响应

时间:2011-06-10 16:22:38

标签: c#

我已经完成了一些套接字工作,我必须发送一个请求,因为我想要一个回复,但我需要在C#中编写一些东西,它只会调用一个旧网页,大约需要10秒钟才能响应,并且不等待响应(故障将通过DB调用标记)。

有一种简单的方法吗?

6 个答案:

答案 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;
}