Как добавить токен 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);
Другие вопросы по тегам