通过 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
我是 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