довольно плохо знаком с Groovy, и я пытался написать несколько тестовых примеров с Groovy для наших REST-интерфейсов. Для настройки нашего тестового устройства мне нужно было очистить базы данных CouchDB и написать для этого простой скрипт, но по какой-то причине я продолжаю получать несанкционированные сообщения от CouchDB. Сократил код и до сих пор не понимаю, почему, хотя пример сценария теперь так прост. Экземпляр CouchDB имеет настройки администратора, но это единственное отклонение от настроек по умолчанию. Проверено имя пользователя / пароль несколько раз. Досадно копировать запрос из лога groovy и добавлять 'curl -X ..' работает из строки cmd.
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.0')
import groovyx.net.http.RESTClient
RESTClient couchDBRestApi = new RESTClient('http://localhost:5984/')
couchDBRestApi.auth.basic 'scott', 'tiger'
['mydb'].each { name ->
def resp = couchDBRestApi.delete(path:name)
assert resp.status == 200
}
Глядя на журналы, я беспокоюсь о паре записей, в частности о пустом списке в конце «WARN DefaultRequestDirector - Ошибка аутентификации: невозможно ответить ни на одну из следующих проблем: {}»? и 'DEBUG RESTClient - код ответа: 401; найден обработчик: org.codehaus.groovy.runtime.MethodClosure@e2e4d7 '?
полный журнал читает:
2010-06-14 15:19:27,520 DEBUG RESTClient - DELETE <a href="http://localhost:5984/mydb" rel="nofollow noreferrer">http://localhost:5984/mydb</a>
2010-06-14 15:19:27,522 DEBUG wire -> "DELETE /mydb HTTP/1.1[EOL]"
2010-06-14 15:19:27,523 DEBUG wire -> "Accept: <em>/</em>[EOL]"
2010-06-14 15:19:27,523 DEBUG wire -> "Host: localhost:5984[EOL]"
2010-06-14 15:19:27,524 DEBUG wire -> "Connection: Keep-Alive[EOL]"
2010-06-14 15:19:27,525 DEBUG wire -> "User-Agent: Apache-HttpClient/4.0 (java 1.5)[EOL]"
2010-06-14 15:19:27,525 DEBUG wire -> "Accept-Encoding: gzip,deflate[EOL]"
2010-06-14 15:19:27,526 DEBUG wire -> "[EOL]"
2010-06-14 15:19:27,526 DEBUG headers -> DELETE /mydb HTTP/1.1
2010-06-14 15:19:27,527 DEBUG headers -> Accept: <em>/</em>
2010-06-14 15:19:27,527 DEBUG headers -> Host: localhost:5984
2010-06-14 15:19:27,528 DEBUG headers -> Connection: Keep-Alive
2010-06-14 15:19:27,528 DEBUG headers -> User-Agent: Apache-HttpClient/4.0 (java 1.5)
2010-06-14 15:19:27,529 DEBUG headers -> Accept-Encoding: gzip,deflate
2010-06-14 15:19:27,543 DEBUG wire <- "HTTP/1.1 401 Unauthorized[EOL]"
2010-06-14 15:19:27,543 DEBUG wire <- "Server: CouchDB/0.11.0 (Erlang OTP/R13B)[EOL]"
2010-06-14 15:19:27,544 DEBUG wire <- "Date: Mon, 14 Jun 2010 14:19:27 GMT[EOL]"
2010-06-14 15:19:27,544 DEBUG wire <- "Content-Type: text/plain;charset=utf-8[EOL]"
2010-06-14 15:19:27,544 DEBUG wire <- "Content-Length: 64[EOL]"
2010-06-14 15:19:27,545 DEBUG wire <- "Cache-Control: must-revalidate[EOL]"
2010-06-14 15:19:27,545 DEBUG wire <- "[EOL]"
2010-06-14 15:19:27,545 DEBUG headers <- HTTP/1.1 401 Unauthorized
2010-06-14 15:19:27,545 DEBUG headers <- Server: CouchDB/0.11.0 (Erlang OTP/R13B)
2010-06-14 15:19:27,546 DEBUG headers <- Date: Mon, 14 Jun 2010 14:19:27 GMT
2010-06-14 15:19:27,546 DEBUG headers <- Content-Type: text/plain;charset=utf-8
2010-06-14 15:19:27,546 DEBUG headers <- Content-Length: 64
2010-06-14 15:19:27,547 DEBUG headers <- Cache-Control: must-revalidate
2010-06-14 15:19:27,548 WARN DefaultRequestDirector - Authentication error: Unable to respond to any of these challenges: {}
2010-06-14 15:19:27,548 DEBUG RESTClient - Response code: 401; found handler: org.codehaus.groovy.runtime.MethodClosure@e2e4d7
2010-06-14 15:19:27,549 DEBUG RESTClient - Parsing response as: text/plain
2010-06-14 15:19:27,549 DEBUG RESTClient - Parsed data to instance of: class java.io.InputStreamReader
2010-06-14 15:19:27,550 DEBUG wire <- "{"error":"unauthorized","reason":"You are not a server admin."}[\n]"
Есть идеи? делать что-то глупое? или ошибка на ком-то (кто? couchdb или groovy?)
PS Никаких прокси / брандмауэров / NTLM или чего-либо необычного - все локальный хост, хотя и в Windows 7 (env разработки).
PPS Просто быстро попытался добавить имя пользователя: пароль @ хост к URL-адресу, который тоже не работает, то же сообщение об ошибке.