如何将自定义授权标头添加到Windows应用商店OData客户端?

时间:2012-12-22 10:03:56

标签: windows-8 windows-runtime wcf-data-services odata windows-store-apps

我正在使用Windows运行时构建Windows应用商店应用。我正在访问使用基本身份验证的OData服务。我正在使用WCF Data Services Tools for Windows Store Apps库(Microsoft.Data.Services.Client.WindowsStore)。

身份验证字符串是自定义格式,因此我不能只使用NetworkCredential(username, password)。我需要自己为我DataServiceContext的每个请求添加标题。

我尝试使用以下代码:

proxy.SendingRequest += (s, e) =>
{
   e.RequestHeaders.Add("Authorization", authHeader);
}

但我收到错误:

'System.Net.WebHeaderCollection' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument of type 'System.Net.WebHeaderCollection' could be found

1 个答案:

答案 0 :(得分:14)

您可以使用在构建请求之后以及将其发送到服务器之前触发的新SendingRequest2事件。

您可以使用RequestMessage.SetHeader(headername, value)方法设置标头。将值设置为null以删除标题。

proxy.SendingRequest2 += (sender, eventArgs) =>
{
    eventArgs.RequestMessage.SetHeader("Authorization", authHeader);
};

WCF Data Services team blog更多地谈论它:

  

SendingRequest2(及其弃用的前任SendingRequest)将触发   请求生成后。 WebRequest不允许您修改   施工后的URL。新事件允许您修改URL   在我们构建基础请求之前,让您完全控制   请求。