2012-10-12 29 views
3

我想在非基于Web的应用程序(基于Windows的应用程序)中向Google Analytics(分析)发送请求? 我试过下面的方法。如何在非基于Web的应用程序中向Google Analytics发送请求

public string trackingId = "UA-XXXXXXXX-2"; 

private void button1_Click(object sender, EventArgs e) 
{ 
    string shopname = "ShopTestng"; 
    string pagename="Testing_MyApp"; 
    callAnalyticsmethod2(pagename, shopname); 
} 

private void callAnalyticsmethod2(string pageName, string shopname) 
{ 
    // create hash code base on pc name 7 user name  
    string visitorId = GetUniqueUserId(); 
    if (string.IsNullOrEmpty(pageName)) 
     pageName = visitorId; 

    string utmGifLocation = "http://www.google-analytics.com/__utm.gif"; 

    string GifUrl = "utmwv=4.9" + 
     "&utmn=" + GetRandomNumber() + 
     "&utmp=" + pageName + 
     "&utmac=" + trackingId + 
     "&utmcc=__utma%3D999.999.999.999.999.1%3B" + 
     "&utmvid=" + visitorId;// + "?" + 

    string shop = shopname.Replace(" ", "_"); 
    string addipara = GifUrl+"&utmr=http://" + shop; 

    byte[] dataStream = Encoding.UTF8.GetBytes(addipara); 

    string request = utmGifLocation; 

    WebRequest webRequest = WebRequest.Create(request); 
    webRequest.Method = "POST"; 
    webRequest.ContentType = "application/x-www-form-urlencoded"; 
    webRequest.ContentLength = dataStream.Length; 
    Stream newStream = webRequest.GetRequestStream(); 
    // Send the data. 
    newStream.Write(dataStream, 0, dataStream.Length); 
    newStream.Close(); 
    WebResponse webResponse = webRequest.GetResponse(); 
    MessageBox.Show((((HttpWebResponse)webResponse).StatusDescription)); 

    newStream = webResponse.GetResponseStream(); 
    StreamReader reader = new StreamReader(newStream); 
    string responseFromServer = reader.ReadToEnd(); 
    MessageBox.Show(responseFromServer); 

    reader.Close(); 
    newStream.Close(); 
    webResponse.Close(); 
} 

根据上述代码示例

MessageBox.Show((((HttpWebResponse)webResponse).StatusDescription)); 

线显示为 “OK”。但是当我检查谷歌分析时,访问计数不会增加。这是什么原因? 有什么我缺少或任何其他方式发送请求分析?

回答

2

,我发现从SOF类似的答案(Cause Google Analytics log from non-web application的和编辑它根据我的方案

private void analyticsmethod4(string trackingId, string pagename) 
    { 
     Random rnd = new Random(); 

     long timestampFirstRun, timestampLastRun, timestampCurrentRun, numberOfRuns; 

     // Get the first run time 
     timestampFirstRun = DateTime.Now.Ticks; 
     timestampLastRun = DateTime.Now.Ticks-5; 
     timestampCurrentRun = 45; 
     numberOfRuns = 2; 

     // Some values we need 
     string domainHash = "123456789"; // This can be calcualted for your domain online 
     int uniqueVisitorId = rnd.Next(100000000, 999999999); // Random 
     string source = "Shop"; 
     string medium = "medium123"; 
     string sessionNumber = "1"; 
     string campaignNumber = "1"; 
     string culture = Thread.CurrentThread.CurrentCulture.Name; 
     string screenRes = Screen.PrimaryScreen.Bounds.Width + "x" + Screen.PrimaryScreen.Bounds.Height; 


     string statsRequest = "http://www.google-analytics.com/__utm.gif" + 
      "?utmwv=4.6.5" + 
      "&utmn=" + rnd.Next(100000000, 999999999) + 
     // "&utmhn=hostname.mydomain.com" + 
      "&utmcs=-" + 
      "&utmsr=" + screenRes + 
      "&utmsc=-" + 
      "&utmul=" + culture + 
      "&utmje=-" + 
      "&utmfl=-" + 
      "&utmdt=" + pagename + 
      "&utmhid=1943799692" + 
      "&utmr=0" + 
      "&utmp=" + pagename + 
      "&utmac=" +trackingId+ // Account number 
      "&utmcc=" + 
       "__utma%3D" + domainHash + "." + uniqueVisitorId + "." + timestampFirstRun + "." + timestampLastRun + "." + timestampCurrentRun + "." + numberOfRuns + 
       "%3B%2B__utmz%3D" + domainHash + "." + timestampCurrentRun + "." + sessionNumber + "." + campaignNumber + ".utmcsr%3D" + source + "%7Cutmccn%3D(" + medium + ")%7Cutmcmd%3D" + medium + "%7Cutmcct%3D%2Fd31AaOM%3B"; 


     using (var client = new WebClient()) 
     { 
      client.DownloadData(statsRequest); 
      //Stream data = client.OpenRead(statsRequest); 
      //StreamReader reader = new StreamReader(data); 
      //string s = reader.ReadToEnd(); 
     } 

    } 

我发现了大约好文章 - 。

Google Analytics for Desktop Application

1

确保关闭导致分析不记录自己的请求的过滤器。

// Send a hit to Google Analytics 
Random rnd = new Random(); 
int cookie = rnd.Next(10000000, 99999999); 
string statsRequest = "http://www.google-analytics.com/__utm.gif" + 
    "?utmwv=4.3" + 
    "&utmn=" + rnd.Next(10000) + // Used only to stop browser caching 
    "&utmhn=myhost.com" + // Hostname 
    //"&utmhid=<random#>" + 
    "&utmr=-" + // Referer 
    "&utmp=/app/v0.4/DEBUG/Test" + // Requested page 
    "&utmac=UA-654321-0" + // Google Analytics ID 
    "&utmcc=__utma%3D" + cookie + "3B%2B__utmz%3D" + cookie + "%3B"; 

using (var client = new WebClient()) 
{ 
    client.DownloadData(statsRequest); 
} 
+1

如何转关闭那些过滤器? – DevT

+0

仍然无法更新计数... :( – DevT

+0

我还没有分配任何过滤器...但它没有更新... – DevT

相关问题