windows phone 操作 http异步返回结果
生活随笔
收集整理的這篇文章主要介紹了
windows phone 操作 http异步返回结果
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
wp中為了提升用戶體驗,砍掉了http的同步操作,僅支持http異步請求,那么該如何及時處理異步操作返回的結果。糾結了很久,終于在技術群中好友的幫助下解決了問題,借助事件,將異步編程模型模式簡單的處理成類似webclient的事件異步模式(windows phone 7的)。
class Helper{public Action<string> DownLoadStringCompleted = null;public void HtmlGet(string url){HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);request.BeginGetResponse(asyn =>{var httpResult = (HttpWebRequest)asyn.AsyncState;var response = (HttpWebResponse)request.EndGetResponse(asyn);using (StreamReader reader = new StreamReader(response.GetResponseStream())){string result = reader.ReadToEnd();//處理返回的htmlif (DownLoadStringCompleted != null){DownLoadStringCompleted(result);}};}, request);}}之后變可以向使用WebClient的OpenReadAsync一樣處理數據
?
windows phone 8 實現方式的改變
public class HttpHelper{public async Task<string> GetUrlContentAsync(string url){var request = WebRequest.CreateHttp(url);string result;try{using (WebResponse response = await request.GetResponseAsync()){using (var reader = new StreamReader(response.GetResponseStream())){result = await reader.ReadToEndAsync();}}}catch (WebException webExc){ throw webExc;} return result;}//private HttpClient client; public Task<HttpWebResponse> GetResponseAsync(HttpWebRequest request){var taskComplete = new TaskCompletionSource<HttpWebResponse>();try{request.BeginGetResponse(asyncResponse =>{HttpWebRequest responseRequest = (HttpWebRequest)asyncResponse.AsyncState;HttpWebResponse response = responseRequest.EndGetResponse(asyncResponse) as HttpWebResponse;taskComplete.TrySetResult(response);}, request);}catch (WebException webExc){HttpWebResponse failedResponse = (HttpWebResponse)webExc.Response;taskComplete.TrySetResult(failedResponse);}return taskComplete.Task;}}?
轉載于:https://www.cnblogs.com/my-tzc/p/3482995.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的windows phone 操作 http异步返回结果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息爆炸无可适从症
- 下一篇: ytu 1980:小鼠迷宫问题(DFS