2011-08-12 58 views
1

打它我已经使用这个: Generate Google Analytics events (__utm.gif requests) serverside谷歌分析,从ColdFusion服务器CFHTTP

这: http://www.garyrgilbert.com/blog/index.cfm/2008/10/21/Tracking-Digital-Content

建立一个CFHTTP字符串,这样,当用户点击一个页面调用谷歌分析。我这样做,因为我服务的页面是XML页面,我不能将JavaScript与XML混合。

我的问题是,谷歌分析忽略了我的请求。我在一个普通的html服务器上激活了我的桶代码,所以它认为/知道它存在,但现在当我调用我的任何xml服务器页面并从coldfusion服务器发出cfhttp请求时,它不会被注册。

更新:

继塞尔吉建议,我已经做了转储找出CFHTTP是做什么的(我以前缺少这是导致其错误变量),我现在得到的HTTP返回200,尽管分析不会将请求应用到我的帐户。

更新2次,包括代码:

<cfset var_utmac='UA-myUA'> <!--- enter the new urchin code ---> 
    <cfset var_utmhn='www.myaddress.co.uk'> 
    <cfset var_utmn = RandRange(10000000,99999999)> 
    <cfset var_cookie = RandRange(10000000,99999999)> 
    <cfset var_random = RandRange(1000000000,2147483647)> 
    <cfset var_today = now()> 
    <cfset var_referer = #cgi.HTTP_REFERER#> 
    <cfset var_uservar = 'jevans'> 
    <cfset var_utmp= ''> 
    <cfset apiname = 'listings.getlistings'> 

    <cfhttp method="get" url="http://www.google-analytics.com/__utm.gif"> 
     <cfhttpparam type="url" name="utmwv" value="1" /> 
     <cfhttpparam type="url" name="utmn" value="#var_utmn#" /> 
     <cfhttpparam type="url" name="utmsr" value="-" /> 
     <cfhttpparam type="url" name="utmsc" value="-" /> 
     <cfhttpparam type="url" name="utmul" value="-" /> 
     <cfhttpparam type="url" name="utmje" value="0" /> 
     <cfhttpparam type="url" name="utmfl" value="-" /> 
     <cfhttpparam type="url" name="utmdt" value="#apiName#" /> 
     <cfhttpparam type="url" name="utmhn" value="#var_utmhn#" /> 
     <cfhttpparam type="url" name="utmr" value="#var_referer#" /> 
     <cfhttpparam type="url" name="utmp" value="#var_utmp#" /> 
     <cfhttpparam type="url" name="utmac" value="#var_utmac#" /> 
     <cfhttpparam type="url" name="utmcc" value="__utma%3D#var_cookie#.#var_random#.#var_today#.#var_today#.#var_today#.2%3B%2B__utmb%3D#var_cookie#%3B%2B__utmc%3D#var_cookie#%3B%2B__utmz%3D#var_cookie#.#var_today#.2.2.utmccn%3D(direct)%7Cutmcsr%3D(direct)%7Cutmcmd%3D(none)%3B%2B__utmv%3D#var_cookie#.#var_uservar#%3B" /> 
    </cfhttp> 

有什么想法?

欢呼

+3

您是否尝试转储'cfhttp'来查看响应是什么? – Sergii

+0

我是个傻瓜,我错过了一个变数。谢谢,虽然我会保持这个开放,直到我知道分析正在记录数据。 – Jarede

+1

你能告诉我们HTTP请求的样子吗? – Yahel

回答

1

看你的代码,我猜,你需要在你的代码与普通&符号代替&amp的。您只需要转义&符号来验证XML文档等。如果您通过网址发送它们,那么它们可能不会被识别为分隔符。

我真的建造它,像这样:

<cfhttp method="get" url="http://www.google-analytics.com/__utm.gif"> 
    <cfhttpparam type="url" name="utmwv" value="5.1.2" /> 
    <cfhttpparam type="url" name="utmn" value="#var_utmn#" /> 
    ... all your other URL variables 
<cfhttp> 

这会让你的代码变得更容易阅读,以及确保所有的变量都在属性格式发送过来,而不需要连接一个巨大的字符串。

+0

我已将代码(在我的代码库和我的问题中)更改为该代码,因为这是更好的方式。但在分析方面仍然不乐观。 – Jarede

0

它看起来像你的几个参数应该是不同的类型。您将它们全部作为URL参数发送。例如,应该以type =“CGI”的形式发送HTTP_REFERER。

看着我自己的GA HTTP,我看到在我的URL字符串,我有utmr = -

,但该请求也沿着CGI首部发送了Referer的:http://12robots.com/

也许尝试加入另一参数类型=“CGI”name =“HTTP_REFERER”value =“#CGI.HTTP_REFERER#”

+0

似乎没有做出的努力是承认我的要求。 – Jarede

0

你可能想看看它是如何在这个PHP类中完成的,看看你是否可以使它适应你的ColdFusion码。它看起来可能不止是需要设置的一些URl参数。您可能需要更好地模拟真实的浏览器,以使GA认为您是真正的浏览器。 http://code.google.com/p/serversidegoogleanalytics/

+0

我也试过这个......我设法从cfhttp调用它的唯一方法是通过noscript标签,使用img,但是我不能在xml输出中做到这一点。 – Jarede

0

很确定cfset var_today = now()是错误的。 GA不知道ColdFusion日期/时间对象是什么

+0

这可能是正确的,我已经离开这个项目,不再有权访问代码库,所以没有任何测试方法,希望这可以帮助其他人。 – Jarede