/// <summary> /// Starts an asynchronous operation to get web site info. /// </summary> /// <param name="domainName"></param> /// <param name="callback"></param> /// <param name="userState"></param> /// <returns></returns> public static IAsyncResult BeginGetWebSiteInfo(string url, IWebProxy proxy, AsyncCallback callback, object userState) { HttpWebRequest request = CreateGetWebSiteInfoRequest(url, proxy); AsyncResult <IWebSiteInfo> result = new AsyncResult <IWebSiteInfo>(callback, userState); NetworkRequestAsyncTimeout.RegisterRequest(request.BeginGetResponse((ar) => { IWebSiteInfo info = null; Exception error = null; byte[] buffer = g_bufferManager.TakeBuffer(BUFFER_SIZE); try { string content = null; using (HttpWebResponse response = (HttpWebResponse)((HttpWebRequest)ar.AsyncState).EndGetResponse(ar)) { content = response.GetResponseString(buffer); info = ParseWebSiteInfo(url, response, content); } } catch (Exception ex) { error = ex; } finally { g_bufferManager.ReturnBuffer(buffer); } result.MarkCompleted(error, false, info); }, request), request, TIMEOUT); return(result); }
public void GetWebSiteInfoTest() { IWebSiteInfo info = WebHelper.GetWebSiteInfo("http://www.huazhang.com", null); IWebSiteInfo info1 = WebHelper.GetWebSiteInfo("http://www.beianm.com", null); IWebSiteInfo info2 = WebHelper.GetWebSiteInfo("http://www.qq.com", null); IWebSiteInfo info3 = WebHelper.GetWebSiteInfo("http://www.163.com", null); IWebSiteInfo info4 = WebHelper.GetWebSiteInfo("http://www.sohu.com", null); Assert.IsNotNull(info1); Assert.IsNotNull(info2); Assert.IsNotNull(info3); Assert.IsNotNull(info4); }
public void BeginGetWebSiteInfoTest() { IWebSiteInfo info1 = null, info2 = null, info3 = null, info4 = null; using (CountdownEvent ce = new CountdownEvent(4)) { WebHelper.BeginGetWebSiteInfo("http://www.beianm.com", null, (ar) => { try { info1 = WebHelper.EndGetWebSiteInfo(ar); } finally { ce.Signal(); } }, null); WebHelper.BeginGetWebSiteInfo("http://www.qq.com", null, (ar) => { try { info2 = WebHelper.EndGetWebSiteInfo(ar); } finally { ce.Signal(); } }, null); WebHelper.BeginGetWebSiteInfo("http://www.163.com", null, (ar) => { try { info3 = WebHelper.EndGetWebSiteInfo(ar); } finally { ce.Signal(); } }, null); WebHelper.BeginGetWebSiteInfo("http://www.sohu.com", null, (ar) => { try { info4 = WebHelper.EndGetWebSiteInfo(ar); } finally { ce.Signal(); } }, null); ce.Wait(); } Assert.IsNotNull(info1); Assert.IsNotNull(info2); Assert.IsNotNull(info3); Assert.IsNotNull(info4); }