Я начал работать с Lucidworks Fusion (2.1.2), и мне удобнее взломать Groovy. Боковое замечание: запросы python обрабатываются без проблем, но я упрям и не хочу использовать python ...Как я могу использовать groovy для подключения к API-интерфейсу Lucidworks Fusion (solr wrapper)?
Fusion обещает API, с которым я с нетерпением жду совместной работы в Groovy.
Как лучше всего подключиться к API с проверкой подлинности Fusion в Fusion с использованием Groovy (в стиле groovy-ish)?
Я пробовал несколько подходов (и, наконец, нашел несколько, чем работал). Я приветствую отзывы о том, почему базовый RESTClient не работает для меня, а также другие «простые» решения.
Вот что я пробовал:
groovyx.net.http.HTTPBuilder hb = new HTTPBuilder(FUSION_API_BASE)
hb.auth.basic(user, pass)
Это терпит неудачу с 401 неавторизованного (из-за кодирования я верю). HTTPBuilder пришел из Gradle:
compile 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.1'
Я также попытался:
HttpPost httpPost = new HttpPost(url);
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username", "sean"));
nvps.add(new BasicNameValuePair("password", "mypass"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2 = httpclient.execute(httpPost);
и получил:
{"code":"unauthorized"}
также пытался:
String path = '/api/apollo/introspect'
URL url = new URL('http', 'corp', 8764, path)
try {
def foo = url.getContent()
log.info "Foo: $foo"
} catch (IOException ioe){
log.warn "IO ERR: $ioe"
}
который бросил (а теперь ожидается) IOError: 401. Если кто-то хочет больше в fo на моих неудачах, дайте мне знать, и я, скорее всего, утомляю вас объемными техническими деталями.
Я бесстыдно отвечаю на свой вопрос (см. Ниже), но надеюсь, что какой-нибудь отличный сенсей может немного просветить меня.
Итак, чтобы наброситься: есть ли лучшее решение/groovier, чем то, что я нашел ниже?