コード例 #1
0
        /// <summary>
        /// Starts an asynchronous operation to get baidu rank in aizhan.com.
        /// </summary>
        /// <param name="domainName"></param>
        /// <param name="callback"></param>
        /// <param name="userState"></param>
        /// <returns></returns>
        public static IAsyncResult BeginGetAiZhanBaiduRank(string domainName, AsyncCallback callback, object userState)
        {
            HttpWebRequest request = CreateNormalRequest(GetAiZhanBaiduRankQueryUri(domainName));
            AsyncResult <IBaiduRankInfo> result = new AsyncResult <IBaiduRankInfo>(callback, userState);

            NetworkRequestAsyncTimeout.RegisterRequest(request.BeginGetResponse((ar) => {
                IBaiduRankInfo rank = 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);
                    }

                    rank = ParseAiZhanBaiduRank(content);
                } catch (Exception ex) {
                    error = ex;
                } finally {
                    g_bufferManager.ReturnBuffer(buffer);
                }

                result.MarkCompleted(error, false, rank);
            }, request), request, TIMEOUT);

            return(result);
        }
コード例 #2
0
        public void GetAiZhanBaiduRankTest()
        {
            IBaiduRankInfo info1 = BaiduUtility.GetAiZhanBaiduRank("www.beianm.com");
            IBaiduRankInfo info2 = BaiduUtility.GetAiZhanBaiduRank("news.qq.com");
            IBaiduRankInfo info3 = BaiduUtility.GetAiZhanBaiduRank("www.xphter.com");

            Assert.IsTrue(info1.RankValue > 0);
            Assert.IsTrue(info1.ExpectedFlow > 0);
            Assert.IsTrue(info2.RankValue > 0);
            Assert.IsTrue(info2.ExpectedFlow > 0);
            Assert.IsTrue(info3.RankValue == 0);
            Assert.IsTrue(info3.ExpectedFlow == 0);
        }
コード例 #3
0
        public void BeginGetAiZhanBaiduRankTest()
        {
            IBaiduRankInfo info1 = null, info2 = null, info3 = null;

            using (CountdownEvent ce = new CountdownEvent(3)) {
                BaiduUtility.BeginGetAiZhanBaiduRank("www.beianhao.net", (ar) => {
                    try {
                        info1 = BaiduUtility.EndGetAiZhanBaiduRank(ar);
                    } finally {
                        ce.Signal();
                    }
                }, null);
                BaiduUtility.BeginGetAiZhanBaiduRank("news.qq.com", (ar) => {
                    try {
                        info2 = BaiduUtility.EndGetAiZhanBaiduRank(ar);
                    } finally {
                        ce.Signal();
                    }
                }, null);
                BaiduUtility.BeginGetAiZhanBaiduRank("www.xphter.com", (ar) => {
                    try {
                        info3 = BaiduUtility.EndGetAiZhanBaiduRank(ar);
                    } finally {
                        ce.Signal();
                    }
                }, null);
                ce.Wait();
            }

            Assert.IsTrue(info1.RankValue > 0);
            Assert.IsTrue(info1.ExpectedFlow > 0);
            Assert.IsTrue(info2.RankValue > 0);
            Assert.IsTrue(info2.ExpectedFlow > 0);
            Assert.IsTrue(info3.RankValue == 0);
            Assert.IsTrue(info3.ExpectedFlow == 0);
        }