XmlSlurper.parse (uri) с базовой аутентификацией HTTP - PullRequest
10 голосов
/ 08 февраля 2011

Мне нужно получить данные из веб-сервиса XML-RPC.

new XmlSlurper().parse("http://host/service") работает нормально, но теперь у меня есть особый сервис, требующий базовой HTTP-аутентификации.

Как установить имя пользователя и пароль для метода parse() или изменить заголовки HTTP запроса?

Использование http://username:password@host/service не помогает - я все еще получаю java.io.IOException: Server returned HTTP response code: 401 for URL исключение.

Спасибо

Ответы [ 2 ]

19 голосов
/ 08 февраля 2011

Я нашел этот код здесь , который может помочь?

Редактируя этот код в вашей ситуации, мы получаем:

def addr       = "http://host/service"
def authString = "username:password".getBytes().encodeBase64().toString()

def conn = addr.toURL().openConnection()
conn.setRequestProperty( "Authorization", "Basic ${authString}" )
if( conn.responseCode == 200 ) {
  def feed = new XmlSlurper().parseText( conn.content.text )

  // Work with the xml document

} else {
  println "Something bad happened."
  println "${conn.responseCode}: ${conn.responseMessage}" 
}
2 голосов
/ 06 июня 2012

Это будет работать для вас

Пожалуйста, не забудьте использовать это вместо 'def authString', упомянутого выше:

def authString  = "${usr}:${pwd}".getBytes().encodeBase64().toString()
...