2012-03-29 41 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

相關問題