string CommitUrl = "http://www.google-analytics.com/__utm.gif"; const string UAID = "UA-00000000-0"; public static void TrackEvent(string category, string action, string label) { //存 提交数据的集合 Dictionary<string, string> parameters = new Dictionary<string, string>(); //定义请求的类型,为其中之一:event、transaction、item、custom variable。如果GIF请求中不包含这些值,则请求类型为page。 parameters.Add("utmt", "event"); //扩展参数 parameters.Add("utme", string.Format("5({0}*{1}*{2})", category, action, label)); //用于区别不同帐号的字串,所有请求中都有 uid parameters.Add("utmac", UAID); //用来生成cookie int tmp = (int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; //拼接Cookie字符串 string temp = string.Format("__utma=1.{0}.{1}.{2}.{3}.{4};+__utmz=1.{3}.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);", tmp, tmp, tmp, tmp, 1); ; //Cookie 值,这个请求参数发送所有的cookie请求 parameters.Add("utmcc", temp); //提交数据 SendData(CommitUrl, parameters); } private static void SendData(string url, Dictionary<string, string> parameters) { //用来存放GET提交的数据 StringBuilder data = new StringBuilder(); //遍历parameters 赋值data foreach (var parameter in parameters) { data.Append(string.Format("{0}={1}&", parameter.Key, Uri.EscapeDataString(parameter.Value))); } //创建实例 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Format("{0}?{1}", url, data)); //异步提交数据 request.GetResponseAsync().ContinueWith(task => { try { if (task.IsFaulted && task.Exception != null) { throw task.Exception; } else if (task.IsFaulted) { //TODO } } catch (Exception) { } finally { //释放资源 if (!task.IsFaulted && task.Result != null) { var disposableResult = task.Result as IDisposable; if (disposableResult != null) { disposableResult.Dispose(); } } } }); }
metro Analytics
只实现了TrackEvent 其他的同理
猜你喜欢
转载自baron-unsafe.iteye.com/blog/1851346
今日推荐
周排行