2012-03-29 40 views

回答

3

可能有更优雅的方式来获取关键字,但我发现我需要一个特别的报告。我无法将其与AdWords .Net客户端库一起使用,但以传统方式构建HTTP请求并不是一件大事。

这是我创建的请求头代码:

var request = (HttpWebRequest)WebRequest.Create(Properties.Settings.Default.AdHocReportsURL); 
request.ContentType = "application/x-www-form-urlencoded"; 
request.Method  = "POST"; 
request.Headers.Add("Authorization: GoogleLogin auth=" + _authToken); 
request.Headers.Add("clientCustomerId: " + _customerID.ToString("000-000-0000")); 
request.Headers.Add("developerToken: " + _developerToken); 

然后您需要添加XML规范为您的临时报告。这是我的方法:

private void AppendReportSpec(HttpWebRequest request, ReportType reportType, IEnumerable<string> fields, DateTime startDate, DateTime endDate) 
    { 
    var reportSpec = new StringBuilder("<reportDefinition><selector>"); 
    foreach (string field in fields) 
     { 
     reportSpec.Append("\t\t<fields>"); 
     reportSpec.Append(field); 
     reportSpec.AppendLine("</fields>"); 
     } 
    reportSpec.Append 
     (
     @"<dateRange><min>{0}</min><max>{1}</max></dateRange> 
     </selector> 
     <reportName>Whatever</reportName> 
     <reportType>{2}</reportType> 
     <dateRangeType>CUSTOM_DATE</dateRangeType> 
     <downloadFormat>CSV</downloadFormat> 
     </reportDefinition>" 
     ); 

    string reportXml = String.Format(reportSpec.ToString(), startDate.ToString("yyyyMMdd"), endDate.ToString("yyyyMMdd"), reportType); 

    using (var requestContent = new StreamWriter(request.GetRequestStream())) 
     requestContent.Write("__rdxml=" + HttpUtility.UrlEncode(reportXml)); 
    } 

最后,您可以解析request.GetResponse()中的值以获取您的数据。

有关报告类型列表(您可能需要KEYWORDS_PERFORMANCE_REPORT)以及每个报告类型允许的字段,请参阅http://code.google.com/apis/adwords/docs/appendix/reports.html#search-query

+0

你好,我知道这是一个非常古老的问题,但你能详细说明我如何检索信息?感谢堆,如果你仍然在那里3年后! – gogobebe2 2017-01-08 13:51:44

相关问题