2015-08-25 2 views
1

мне нужно установить специальный параметр на стороне сервера, я пытаюсь этот запрос:набор пользовательских параметров в измерении пула в Google Analytics

http://www.google-analytics.com/collect?&v=1&tid=UA-XXXXXXXX-X&cid=111111111.111111111&t=all&cd1=MyCustomDimension

В значении «Т» Я также попробовать «событие »и« просмотр страницы », но это не сработает.

Я создал этот класс для выполнения запроса.

public static class GoogleAnalyticsServerSide 
{ 
    private static string googleURL = "http://www.google-analytics.com/collect"; 
    private static string googleVersion = "1"; 
    private static string googleTrackingID = "UA-XXXXXX-X"; 
    private static string googleClientID = "111111111.11111111"; 

    private static Dictionary<string, string> baseValues() 
    { 
     Dictionary<string, string> data = new Dictionary<string, string>(); 
     data.Add("v", googleVersion);   // Version. 
     data.Add("tid", googleTrackingID); // Tracking ID/Web property/Property ID. 
     data.Add("cid", googleClientID);  // Anonymous Client ID. 
     return data; 
    } 
    public static void TrackEvent(string category, string action, string label) 
    { 
     Dictionary<string, string> postData = new Dictionary<string, string>(); 
     postData = baseValues(); 
     postData.Add("t", "event"); 
     postData.Add("ec", category); 
     postData.Add("ea", action); 
     postData.Add("el", label); 
     Track(postData); 
    } 

    public static void TrackCustomDimension(string index, string value) 
    { 
     Dictionary<string, string> postData = new Dictionary<string, string>(); 
     postData = baseValues(); 
     postData.Add("t", "all"); 
     postData.Add("cd" + index, value); 
     Track(postData); 
    } 
    private static void Track(Dictionary<string, string> postData) 
    { 
     try 
     { 
      var request = (HttpWebRequest)WebRequest.Create(googleURL); 
      request.Method = "POST"; 

      var postDataString = postData 
       .Aggregate("", (data, next) => string.Format("{0}&{1}={2}", data, next.Key, 
                  HttpUtility.UrlEncode(next.Value))) 
       .TrimEnd('&'); 

      // set the Content-Length header to the correct value 
      request.ContentLength = Encoding.UTF8.GetByteCount(postDataString); 

      // write the request body to the request 
      using (var writer = new StreamWriter(request.GetRequestStream())) 
      { 
       writer.Write(postDataString); 
      } 

      try 
      { 
       var webResponse = (HttpWebResponse)request.GetResponse(); 
       if (webResponse.StatusCode != HttpStatusCode.OK) 
       { 
        throw new HttpException((int)webResponse.StatusCode, 
              "Google Analytics tracking did not return OK 200"); 
       } 
      } 
      catch (Exception ex) 
      { 

      } 
     } 
     catch (Exception e) 
     { 

     } 
    } 

} 

Класс работает хорошо, потому что если я использую метод TrackEvent это работает. Я не уверен, что я пропущу что-то в почтовом запросе Custom Dimension.

Заранее спасибо.

ответ

0

Я не уверен, что вы подразумеваете под словом «это не работает», потому что у вас все хорошо.

Независимо от того, вы должны попытаться использовать Measurement Protocol Hit Builder для создания и проверки своих хитов до их отправки, чтобы убедиться, что все необходимые поля есть.

Если вы хотите проверить свои образы в коде, вы отправляете свои хиты в Measurement Protocol Validation Server, чтобы проверить их достоверность, прежде чем отправлять их в Google Analytics. Создатель хитов фактически использует этот инструмент под капотом для проверки ударов.

Смежные вопросы