OData的新手,我需要访问需要身份验证和令牌的SAP Odata Web服务。假设我已对令牌进行了硬编码。如何将此令牌添加到Simple OData Client?
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);
请帮助我。
更新-
在此链接中:Simple Odata Client - How to add oAuth Token in each request header?
它没有显示如何添加硬编码的令牌。对于我的问题,我需要添加一个给定的令牌并发出一个Odata请求。我检查了Odata.org网站,但似乎找不到我的案例的任何示例。
我没有使用过simple.Odata.client的经验,能不能请我介绍一下。
谢谢
答案 0 :(得分:2)
我相信您可以在发送请求之前使用ODataClientSettings.BeforeRequest
操作更改请求。
在下面的示例中,我将请求的Authorization
标头设置为'Bearer <Token>
':
settings.BeforeRequest = req => {
req.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "Your_Token_Here");
};
当然,您可以根据自己的特定身份验证类型来配置请求。
答案 1 :(得分:0)
您在示例中使用的URL显然是错误的,而不是SAP的OData URL。
您需要以下“ yourODataServiceRootURL”的基本URL,然后稍后在ODataclient设置中添加相对路径,例如。 “ api / data / v9.1”
一个更清晰的方法是使用HttpClient实例实例化ODataClient,而不是使用委托方法在每个Http调用上拦截并添加Authorization标头。
这还允许您从外部控制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);