Передайте учетные данные при вызове API в Scala - PullRequest
2 голосов
/ 27 марта 2019

Я пытаюсь вызвать конечную точку REST с помощью HttpGet и передать учетные данные пользователя.

var content = ""
val httpClient : CloseableHttpClient = HttpClients.createDefault();
val httpResponse = new HttpGet(url)
httpResponse.addHeader(BasicScheme.authenticate(new UsernamePasswordCredentials(“uname”,”pwd”),”UTF-8", false))
val response = httpClient.execute(httpResponse)
val entity = httpResponse.getEntity()
val inputStream = entity.getContent()
content = fromInputStream(inputStream).getLines.mkString
inputStream.close
httpClient.getConnectionManager().shutdown()
return content

Похоже, что BasicScheme устарела в "org.apache.http.impl.auth".Любые указатели о том, как двигаться вперед ... Заранее спасибо.

1 Ответ

2 голосов
/ 27 марта 2019

Если вы пытаетесь использовать базовую аутентификацию , этого должно быть достаточно

val credentialsProvider = new BasicCredentialsProvider()
credentialsProvider.setCredentials(
    AuthScope.ANY, 
    new UsernamePasswordCredentials("username", "password")
)

val httpClient = 
    HttpClientBuilder.create()     
                     .setDefaultCredentialsProvider(credentialsProvider)
                     .build()

val httpResponse = new HttpGet(url)
httpClient.execute(httpResponse)

Если вместо этого вы предпочитаете использовать простой заголовок HTTP , вы можете использовать

def buildEncodedCredentials(): String = {
    val credentialsString = username + ":" + password
    val charset = StandardCharsets.ISO_8859_1
    val encodedBytes = Base64.getEncoder().encode(credentialsString.getBytes(charset))
    return new String(encodedBytes, charset)
}

 httpResponse.addHeader(HttpHeaders.AUTHORIZATION, "Basic " + buildEncodedCredentials())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...