我正在使用Web API 2来创建Google Analytics Reporting API v4代理。我使用Google.Apis.AnalyticsReporting.v4
库成功创建了请求参数,并成功通过服务帐户进行身份验证。但是,运行BatchGet.Execute()
方法时,批处理报告请求失败。
Fiddler显示请求是404:
在此服务器上找不到请求的网址/v4/reports%3AbatchGet
。这就是我们所知道的。
使用Postman我可以看到如果URL正确(https://analyticsreporting.googleapis.com/v4/reports:batchGet
)请求成功。 Web API或.NET 4.6.1后端的某些内容正在对请求URL进行编码,并导致Google发回404。
如何配置Web API 2,以便在Google API请求的网址中包含冒号?
public IHttpActionResult Post([FromBody] RequestObject req)
{
var resp = new CompleteResponse();
try
{
var service = new AnalyticsReportingService(new BaseClientService.Initializer
{
HttpClientInitializer = Cert,
ApplicationName = "GA Test"
});
var report = new GetReportsRequest();
var result = service.Reports.BatchGet(report).Execute();
resp.Result = result.Reports[0].Data;
}
catch (Exception ex)
{
resp.Error = ex.ToString();
}
return Ok(resp);
}
的Global.asax:
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new System.Net.Http.Formatting.RequestHeaderMapping("Accept",
"text/html",
StringComparison.InvariantCultureIgnoreCase,
true,
"application/json"));
}
WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
答案 0 :(得分:0)
1.31.1中已修复已知错误。解决方案是更新到最新版本。
请参阅https://github.com/google/google-api-dotnet-client/pull/1121