При использовании http-builder groovy с базовой аутентификацией поведение по умолчанию заключается в том, чтобы сначала отправить неаутентифицированный запрос и повторно отправить запрос с учетными данными после получения 401 в первую очередь. Httpclient Apache предлагает упреждающую аутентификацию для отправки учетных данных непосредственно на первом запрос. Как я могу использовать упреждающую аутентификацию в http-Builder Groovy? Приветствуются любые примеры кода.
использование groovy http-builder в вытесняющем режиме
Ответы (2)
На основе выпуск JIRA, вы можете сделать что-то вроде этого:
def http = new RESTClient('http://awesomeUrl/')
http.client.addRequestInterceptor(new HttpRequestInterceptor() {
void process(HttpRequest httpRequest, HttpContext httpContext) {
httpRequest.addHeader('Authorization', 'Basic ' + 'myUsername:myPassword'.bytes.encodeBase64().toString())
}
})
def response = http.get(path: "aResource")
println response.data.text
person
Daniel
schedule
10.07.2011
красивая. Я получал ошибочные (и, казалось бы, безобидные, но раздражающие) 500 ошибок с плагином Spring Security Grails и базовой аутентификацией без установленного упреждающего режима. Это исправило это. Примечание. Мне пришлось добавить следующие операции импорта: import org.apache.http.HttpRequestInterceptor import org.apache.http.protocol.HttpContext
- person ed209; 18.02.2012
Вы также можете решить это заводным стилем с помощью
http = new RESTClient('http://awesomeUrl/')
http.headers['Authorization'] = 'Basic '+"myUsername:myPassword".getBytes('iso-8859-1').encodeBase64()
person
towe75
schedule
07.03.2013
Кроме того,
getBytes('iso-8859-1')
можно заменить просто bytes
.
- person David V; 18.04.2013
@tweber, не могли бы вы уточнить: какова цель кодирования? это как-то требуется для base64? или по протоколу Basic auth? Изменить: хм, этот ответ, похоже, отвечает на мой вопрос. Хотя еще не заморачивался этим. Любой ответ будет оценен.
- person andrybak; 27.11.2019