【发布时间】:2013-11-29 12:09:30
【问题描述】:
我在运行 c# google api 时收到 400 bad request 错误。我知道它最终是因为 API 构建了一个查询字符串并且查询字符串的长度很长。如何强制 API 发布而不是 GET?
我的代码:
string username = "SAMPLE@SAMPLE.COM";
string pass = "PASS";
string gkey = "?key=XXXXXXXXXXXXXXXXXXXXXXXXXXX";
string dataFeedUrl = "https://www.google.com/analytics/feeds/data" + gkey;
string accountFeedUrl = "https://www.googleapis.com/analytics/v2.4/management/accounts" + gkey;
AnalyticsService service = new AnalyticsService("API Sample");
service.setUserCredentials(username, pass);
DataQuery query1 = new DataQuery(dataFeedUrl);
query1.Ids = "ga:34197921";
query1.Dimensions = "ga:medium,ga:campaign,ga:date,ga:isMobile,ga:isTablet,ga:searchKeyword,ga:hostname";
query1.Metrics = "ga:visits,ga:visitors,ga:visitBounceRate,ga:goalStartsAll,ga:goalCompletionsAll,ga:goal1Starts,ga:goal1Completions,ga:goal2Starts,ga:goal2Completions,ga:goal3Starts,ga:goal3Completions,ga:goal4Starts,ga:goal4Completions,ga:adCost,ga:totalValue";
query1.Sort = "ga:date,ga:hour";
query1.NumberToRetrieve = 50;
query1.GAStartDate = new DateTime(2012, 1, 2).ToString("yyyy-MM-dd");
query1.GAEndDate = DateTime.Now.ToString("yyyy-MM-dd");
query1.StartIndex = 1;
我的例外:
Google.GData.Client.GDataRequestException:请求执行失败:https://www.google.com/analytics/feeds/data?key=XXXXXXXX&start-index=1&max-results=10000&dimensions=ga:medium,ga:campaign,ga :date,ga:isMobile,ga:isTablet,ga:searchKeyword,ga:hostname&end-date=2013-11-15&ids=ga:34892951&metrics=ga:visits,ga:visitors,ga:visitBounceRate,ga:goalStartsAll,ga:goalCompletionsAll ,ga:goal1Starts,ga:goal1Completions,ga:goal2Starts,ga:goal2Completions,ga:goal3Starts,ga:goal3Completions,ga:goal4Starts,ga:goal4Completions,ga:adCost,ga:totalValue&start-date=2012-01-02 -- -> System.Net.WebException:远程服务器返回错误:(400)错误请求。在 System.Net.HttpWebRequest.GetResponse() 在 Google.GData.Client.GDataRequest.Execute() --- 内部异常堆栈跟踪结束 --- 在 Google.GData.Client.GDataRequest.Execute() 在 Google.GData .Client.GDataGAuthRequest.Execute(Int32 retryCounter) 在 Google.GData.GData.Client.Service.Query(Uri queryUri, DateTime ifModifiedSince,String etag, Int64& contentLength) 在 Google.GData.GData.Client.GDataGAuthRequest.Execute() 在 Google.GData。 Client.Service.Query(Uri queryUri, DateTime ifModifiedSince) 在 Google.GData.Client.Service.Query(FeedQuery feedQuery) 在 Google.GData.Analytics.AnalyticsService.Query(DataQuery feedQuery)
【问题讨论】:
标签: c# google-analytics google-api http-status-code-400