Как добавить токен Bearer в клиент Simple OData
Я новичок в OData, мне нужно получить доступ к веб-сервису SAP Odata, который требует аутентификации и токена. Скажем, у меня есть жетон в коде. Как добавить этот токен в 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 - Как добавить oAuth Token в каждый заголовок запроса?
Он не показал, как добавить жестко закодированный токен. Для моей проблемы мне нужно добавить данный токен и сделать запрос Odata. Я проверяю веб-сайт Odata.org, похоже, я не нашел ни одного примера для своего случая.
У меня нет опыта работы с simple.Odata.client. Может ли кто-нибудь быть достаточно любезным, чтобы показать мне, как это сделать.
Спасибо
1 ответ
Я считаю, что вы можете использовать ODataClientSettings.BeforeRequest
действие по изменению запроса до его отправки.
В приведенном ниже примере я установил Authorization
заголовок запроса кBearer <Token>
":
settings.BeforeRequest = req => {
req.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "Your_Token_Here");
};
Конечно, это зависит от вас, чтобы настроить запрос для вас конкретного типа аутентификации.
URL-адрес, который вы используете в своем примере, явно неправильный, а не URL-адрес OData для SAP.
Вам понадобится базовый URL-адрес для "yourODataServiceRootURL" ниже, а затем добавьте относительный путь позже в настройках ODataclient, например. "api/data/v9.1"
Вместо использования метода делегата для перехвата и добавления заголовка авторизации при каждом вызове Http более ясным / чистым решением является создание экземпляра ODataClient с экземпляром HttpClient.
Это также позволяет вам управлять жизненным циклом HttpClient извне.
Приведенный ниже код представляет собой отрывок из основного приложения.Net, использующего токен OAuth2 Azure AD для подключения к Dynamics 365 OData Web API.
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);