Isso pode parecer um pouco óbvio para alguns, mas isso me deixou louco por um tempo enquanto tentava codificar um serviço de busca Bing. Ao enviar a solicitação usando um cliente GUI e curl, o ‘basic’ no cabeçalho de autenticação básico não fazia distinção entre maiúsculas e minúsculas. No entanto, ao enviar por meio de código (Java e Groovy), o ‘básico’ tinha que ser capitalizado (‘Básico’) ou eu receberia um erro informando que o serviço só aceita solicitações de autenticação Básica e OAuth. Como se isso não bastasse para deixá-lo louco, há outra advertência. Ao enviar usando curl, um gui ou através da página da web, você deve especificar sua chave de API duas vezes (usuário / pw). No entanto, ao enviar por código, você especifica a chave apenas uma vez no campo de senha. No entanto, você precisa codificar um ‘:’ antes de sua senha ou o serviço não funcionará. Então,
// Works
def authString = ":${apikey}".getBytes().encodeBase64()
// Header should look like this
["Authorization": ["Basic ${authString}"]]
// Does not work. No leading colon (:) in the auth string. 'Basic' is lowercase
def authString = "${apikey}".getBytes().encodeBase64()
// Header should look like this
["Authorization": ["basic ${authString}"]]
Espero que você ache isso tão útil quanto eu teria achado hoje. 🙂