1

OData 新手,我需要访问需要身份验证和令牌的 SAP Odata Web 服务。假设我对令牌进行了硬编码。如何将此令牌添加到简单 OData 客户端?

var settings = new Simple.OData.Client.ODataClientSettings();

settings.BaseUri = new Uri("https://..../UoM?$filter=wer eg '1000' &format=json");

settings.Credentials = new NetworkCredential("user1", "usrpwd");
var client = new ODataClient(settings);

请帮助我。

更新 -

在此链接中:简单 Odata 客户端 - 如何在每个请求标头中添加 oAuth 令牌?

它没有显示如何添加硬编码令牌。对于我的问题,我需要添加一个给定的令牌并发出 Odata 请求。我查看了 Odata.org 网站,我似乎没有找到任何适合我的案例的示例。

我对 simple.Odata.client 没有经验,可以请一些人告诉我如何操作。

谢谢

4

2 回答 2

4

我相信您可以ODataClientSettings.BeforeRequest在发送请求之前使用该操作来更改请求。

在下面的示例中,我将Authorization请求的标头设置为“ Bearer <Token>”:

settings.BeforeRequest = req => {
    req.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "Your_Token_Here");
};

当然,您可以为特定类型的身份验证配置请求。

于 2018-06-30T11:44:03.620 回答
0

您在示例中使用的 URL 显然是错误的,而不是 SAP 的 OData URL。

您需要下面“yourODataServiceRootURL”的基本 URL,然后稍后在 ODataclient 设置中添加相对路径,例如。“API/数据/v9.1”

不是使用委托方法来拦截并在每个 Http 调用上添加 Authorization 标头,更清晰/更清洁的解决方案是使用 HttpClient 实例实例化 ODataClient。

这也允许您在外部控制 HttpClient 生命周期。

下面的代码是使用 Azure AD OAuth2 令牌连接到 Dynamics 365 OData Web API 的 .Net 核心应用程序的摘录。

httpClient.BaseAddress = new Uri(yourODataServiceRootURL);
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", yourBearerAccessToken);

//Use the httpClient we setup with the Bearer token header
var odataSettings = new ODataClientSettings(httpClient, new Uri("api/data/v9.1", UriKind.Relative));

var odataClient = new ODataClient(odataSettings);
于 2020-01-15T01:33:29.720 回答