/// <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); }
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); }
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); }