通过http异步发送数据

时间:2015-02-17 15:22:41

标签: c# http httpwebrequest dotnet-httpclient

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

有人可以解释一下它是如何运作的吗?如何异步写后期数据?

我想写函数(无论我要编写多少其他私有函数):

public delegate void ReceiveFunc(HttpWebResponse response);

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

感谢。

1 个答案:

答案 0 :(得分:3)

假设您使用的是C#5.0,则应使用带有异步功能的新async-await关键字。

您可以使用GetRequestStream()

代替Stream s = await request.GetRequestStreamAsync()

如果要异步接收响应,则可以调用:

HttpWebResponse response = await request.GetResponseAsync()

这将使您的生活比使用具有Begin和End函数的旧回调方法更容易。

请注意,只要您使用await关键字,就必须将该功能标记为async

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