我正在尝试通过以下方式向 google bigquery 客户端添加自定义标头,但由于某些原因它不起作用。有人可以建议我如何向 google bigquery 客户端添加自定义标头。
下面是我的示例代码:
var gClient = BigQueryClient.Create(projectId, credential);
gClient.Service.HttpClient.DefaultRequestHeaders.TryAddWithoutValidation("test", "this is default header");
var results = gClient.ExecuteQuery(query, null);
通过上面的代码,我可以看到自定义标头“test”已添加到httpclient,但是当gClient执行查询时,我没有看到这个自定义标头。
我正在使用 fiddler 来监控我的机器的流量。在 fiddler 中,我可以看到进行了两次调用。
我。 oauth认证
二.大查询执行
在这两条消息中,我没有看到默认的 http 标头“test”。
我也尝试过,gClient.Service.HttpClientInitializer.Initialize()
初始化httpclient,但没有用。
var gClient = BigQueryClient.Create(projectId, credential);
ConfigurableHttpClient httpClient = new ConfigurableHttpClient(new ConfigurableMessageHandler(new CustomMessageHandler()), true);
httpClient.DefaultRequestHeaders.Add("xxxxx", "yyyyyyy");
gClient.Service.HttpClientInitializer.Initialize(httpClient);
在这种情况下,也是同样的问题...默认标头不是 httprequest 的一部分。
有人可以帮我解决这个问题吗...?
仅供参考...我们正在使用代理拦截所有出站呼叫,并且根据此自定义 http 标头,我们需要决定是否允许出站呼叫。因此,我们希望将其注入服务端并在代理中验证此自定义标头。
如上所述,我尝试添加DefaultRequestHeaders
到httpclient,但它不起作用。
另外,我也尝试过httpclient.MessageHandler.AddExecuteInterceptor()
。但还是没用。
我的问题...我们可以为 C# 中的所有出站调用注入默认的 httpclient 吗?特别是对于谷歌大查询。