Я написал сценарий Groovy для управления некоторыми репозиториями организаций в Github. Он работал отлично до нескольких недель назад, когда тот же скрипт начал сбой. Может быть, Github изменил некоторые аспекты их API? Или, может быть, я делаю что-то глупое. Я сузили проблему до этого упрощенного примера (требуется действительный github счет):401 Несанкционированный доступ для API Github с использованием HttpBuilder (Groovy)
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.6')
import groovyx.net.http.HTTPBuilder
String username = System.console().readLine 'Username: '
char[] password = System.console().readPassword 'Password: '
def github = new HTTPBuilder('https://api.github.com')
github.auth.basic username, password.toString()
def emails = github.get(path: '/user/emails',
headers: ['Accept': 'application/json', 'User-Agent': 'Apache HTTPClient'])
println emails
Выход:
$ заводной GithubHttpBuilderTest.groovy
Имя пользователя: имя пользователя
Пароль:
Пойманный: groovyx.net.http.HttpResponseException: неавторизованный
groovyx.net.http.HttpResponseException: неавторизованный
at groovyx.net.http .HTTPBuilder.defaultFailureHandler (HTTPBuilder.java:652)
на groovyx.net.http.HTTPBuilder.doRequest (HTTPBuilder.java:508)
в groovyx.net.http.HTTPBuilder.get (HTTPBuilder.java:292)
на groovyx.net.http.HTTPBuilder.get (HTTPBuilder.java:262)
в groovyx.net.http.HTTPBuilder $ get.call (Unknown Source)
на GithubHttpBuilderTest.run (GithubHttpBuilderTest.groovy: 10)
Используя те же учетные данные, локон работы:
$ curl -u username https://api.github.com/user/emails
Выход:
[
"[email protected]"
]
Я пропускаю что-то о том, как правильно аутентификации в API Github используя HttpBuilder?
EDIT: исправлена ошибка в моем коде, где я обработал
System.console().readPassword
как строку вместо фактического возвращаемого типа: char []. К сожалению.
Спасибо. Это была комбинация ошибок с моей стороны (обработка пароля с консоли как String, когда это на самом деле char []), и тот факт, что github.auth.basic, похоже, не работает. Теперь работает. Благодаря! – Burke