为什么HttpWebRequest在跟踪桌面应用程序指标时没有访问Google Analytics或Piwik?

时间:2011-12-23 05:31:18

标签: c# winforms

我的应用程序在启动之前做的最后一件事是启动一个新线程,执行一个简单的HttpWebRequest,我想跟踪Google Analytics或Piwik:

Thread thread2 = new Thread(new ThreadStart(this.ThreadAnalytics));
thread2.IsBackground = true; thread2.Start();

public void ThreadAnalytics()
{
    try
    {
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://netlauncher.org/version1.0.0.html");
    request.Method = "GET";
    WebResponse response = request.GetResponse();
    StreamReader sr = new StreamReader(response.GetResponseStream(),System.Text.Encoding.UTF8);
    string result = sr.ReadToEnd();
    sr.Close();
    response.Close();
    }
    catch (Exception) { /* do nothing */ }
}

注意:虽然不需要StreamReader,但我已将其包含在测试目的中。

我可以通过WireShark查看HTTP GET,但我在Google Analytics中看不到任何内容。这让我相信这是一个Java问题。我切换到Piwik并使用了不需要Java的图像跟踪器代码:

<img src="http://mydomain.com/piwik.php?idsite=1&rec=1" style="border:0" alt="" />

与谷歌分析一样,我可以使用IE浏览器导航到此页面并看到点击显示。然而,我的应用程序的命中没有。我也试过指定用户代理,语言等。有什么我在看的东西吗?

1 个答案:

答案 0 :(得分:1)

Google Analytics也不需要Java(它使用JavaScript)。

问题在于,GA,Piwik和大多数其他分析工具需要通过作为HTML页面一部分加载的资源进行某种回调 - 通常是图像或JavaScript调用。通过仅读取HTTP响应,您的代码当前未加载任何这些工具将使用的相关资源。

Google Analytics(分析)可能会提供一个API,您可以直接为您尝试的内容调用该API。类似地,使用您的Piwik代码,您可以通过直接调用http://mydomain.com/piwik.php?idsite=1&rec=1 URL作为HttpWebRequest的一部分来使其工作 - 而不是调用包含对该URL的图像引用的HTML页面。否则,您将需要使用其他代码或库作为浏览器,并实际“加载”您在回复请求时收到的HTML。