通过 http 异步发送数据

Send data over http asynchronously

我是 C# 新手,我想异步发送 Web 请求。我将 HttpWebRequest 与方法 POST 一起使用。问题是,如果我使用函数 GetRequestStream(),我的应用程序会冻结,即使我已经异步获取响应。我读到,函数 GetRequestStream() 立即尝试与服务器通信。我找到函数 BeginGetResponse(),但我不明白如何使用它。

有人可以向我解释一下它是如何工作的吗?如何异步写入post数据?

我想写这样的函数(不管我要写多少其他私有函数):

public delegate void ReceiveFunc(HttpWebResponse response);

public static void sendRequest(string url, HttpWebRequest request, string content, ReceiveFunc callback) {
    // Return response back to callback
}

谢谢。

假设您使用的是 C# 5.0,您应该将新的 async-await 关键字与异步函数一起使用。

您可以使用 Stream s = await request.GetRequestStreamAsync()

而不是 GetRequestStream()

当您想异步接收响应时,您可以调用:

HttpWebResponse response = await request.GetResponseAsync()

与使用具有 Begin 和 End 函数的旧回调方法相比,这将使您的生活更轻松。

请记住,无论您在哪里使用 await 关键字,都必须将函数标记为 async

这是关于使用 async-await 关键字的 MSDN 文章:https://msdn.microsoft.com/en-us/library/hh191443.aspx