Подскажите кто использовал Named Credentials для Basic Auth
есть метод:
public HttpResponse postContragent(String body) {
HttpRequest request = new HttpRequest();
request.setMethod(POST);
request.setBody(body);
request.setHeader('content-type', 'application/json');
request.setTimeout(120000);
request.setEndpoint('callout:JIRA');
HttpResponse response = new Http().send(request);
if (response.getStatusCode() != 200) {
throw new ClientException('\nendpoint = ' + request.getEndpoint() +
'\nendpoint = ' + 'callout:JIRA' +
'\nauthorizationHeader = ' + request.getHeader('Authorization'));
}return response;
}
хотя галочка Generate Authorization Header стоит, заголовок в реквест не записывается, да и ендпойнт тоже.
И второй вопрос: есть API где Named Credentials не подходит хочется записать токены в Custom Setting, но как их красиво пушить в прод?
Подскажите кто использовал Named Credentials для Basic Auth есть метод: [code] public HttpResponse postContragent(String body) { HttpRequest request = new HttpRequest(); request.setMethod(POST); request.setBody(body); request.setHeader('content-type', 'application/json'); request.setTimeout(120000); request.setEndpoint('callout:JIRA'); HttpResponse response = new Http().send(request); if (response.getStatusCode() != 200) { throw new ClientException('\nendpoint = ' + request.getEndpoint() + '\nendpoint = ' + 'callout:JIRA' + '\nauthorizationHeader = ' + request.getHeader('Authorization')); } return response; } [/code] получаю соответственно: endpoint = callout:JIRA endpoint = callout:JIRA authorizationHeader = null хотя галочка Generate Authorization Header стоит, заголовок в реквест не записывается, да и ендпойнт тоже. И второй вопрос: есть API где Named Credentials не подходит хочется записать токены в Custom Setting, но как их красиво пушить в прод?
Прикольно, не сталкивался с Named Credentials.
Обычно делаю это посредством Custom Settings. Если это пакет и custom settings являются Private, то сделаю специальную страницу Settings для доступа/редактирования Private Custom Settings. Да, еще требуется добавить Remote Site Settings, но это делается один раз и не доставляет проблем. Зато гибко.
На счет прода не вижу проблем. Наоборот - под каждый орг нужны свои креды для API, поэтому ручное сохранение кредов на каждом орге (в том числи и проде) позволяет добавить проверочный шаг в настройке орга.
Прикольно, не сталкивался с Named Credentials. Обычно делаю это посредством Custom Settings. Если это пакет и custom settings являются Private, то сделаю специальную страницу Settings для доступа/редактирования Private Custom Settings. Да, еще требуется добавить Remote Site Settings, но это делается один раз и не доставляет проблем. Зато гибко. На счет прода не вижу проблем. Наоборот - под каждый орг нужны свои креды для API, поэтому ручное сохранение кредов на каждом орге (в том числи и проде) позволяет добавить проверочный шаг в настройке орга.
Но с Named Credentials все равно еще предстоит мне разобраться. Может это что-то и лучше.
Выше я отписал что пока не видел проблем с вариантом Custom Settings.
Но с Named Credentials все равно еще предстоит мне разобраться. Может это что-то и лучше. Выше я отписал что пока не видел проблем с вариантом Custom Settings.
Я вот так собираю реквест
PageReference reference = new PageReference('callout:MyRest' + relativePath);
if(params != null) {
reference.getParameters().putAll(params);
}
final HttpRequest request = new HttpRequest();
request.setEndpoint(reference.getUrl());
if(body != null) {
request.setBody(body);
}
request.setMethod(httpMethod);
request.setHeader('Content-Type', 'application/json');
request.setHeader('apiAccessKeyId', '{!$Credential.UserName}');
request.setHeader('apiSecretAccessKey', '{!$Credential.Password}');
Я вот так собираю реквест [code] PageReference reference = new PageReference('callout:MyRest' + relativePath); if(params != null) { reference.getParameters().putAll(params); } final HttpRequest request = new HttpRequest(); request.setEndpoint(reference.getUrl()); if(body != null) { request.setBody(body); } request.setMethod(httpMethod); request.setHeader('Content-Type', 'application/json'); request.setHeader('apiAccessKeyId', '{!$Credential.UserName}'); request.setHeader('apiSecretAccessKey', '{!$Credential.Password}'); [/code]
Фигасе! Я чет по ходу пропустил? Это что за фича в Apex в стригу запихивать Visualforce expression?
И как это работает?
[quote="Gres"] request.setHeader('apiAccessKeyId', '{!$Credential.UserName}'); request.setHeader('apiSecretAccessKey', '{!$Credential.Password}');[/quote] Фигасе! Я чет по ходу пропустил? Это что за фича в Apex в стригу запихивать Visualforce expression? И как это работает?
Попробовал PageReference reference = new PageReference('callout:MyRest');
но все равно 'callout:MyRest' воспринимает как строку.
Наверное придется делать через Custom Setting.
Магия с '{!$Credential.UserName}'); тоже ввела в ступор, а если в классе будет упоминание нескольких Named Credentials интересно какие он возьмет.
Попробовал PageReference reference = new PageReference('callout:MyRest'); но все равно 'callout:MyRest' воспринимает как строку. Наверное придется делать через Custom Setting. Магия с '{!$Credential.UserName}'); тоже ввела в ступор, а если в классе будет упоминание нескольких Named Credentials интересно какие он возьмет.
У них же уникальные имена, ты их сетапишь в СФ
[quote="akr0bat"]Магия с '{!$Credential.UserName}'); тоже ввела в ступор, а если в классе будет упоминание нескольких Named Credentials интересно какие он возьмет.[/quote] У них же уникальные имена, ты их сетапишь в СФ