通过使用HttpWebRequest
并使用 async / await 来实现网络API,我感到很困惑。
我需要发送GET
(或POST
)个请求,并在不阻止用户界面的情况下收到回复。
首先通过BeginGetResponse
方法实现,我可以设置回调并解析结果。
但是第二次实现需要通过 async / await 功能来完成,我真的无法理解它应该如何工作。
首次实施:
public class WebRequestGenerator : IRequestGenerator
{
public IAsyncResult StartRequest(RequestData data) //data is my own class which aggregates some uri and callbacks' actions
{
WebRequest request = WebRequest.Create(data.uri);
// here I create a callback which will parse response and call user's appropriate actions for success and exceptional cases.
AsyncCallback completed = RequestCompletedCallback(data.successRequestAction, data.errorRequestAction);
return request.BeginGetResponse(completed, request); //here I can set a callback
}
}
对于第二次实现,我应该使用
return request.GetResponseAsync()
我无法控制结果。在这种情况下,我返回Task<WebResponse>
,但实际上我希望有可能返回Task<T>
,其中T
是一个类,响应将被反序列化。
任何帮助?