Exemple #1
0
        /// <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);
        }