XmlSlurper.parse(uri)具有HTTP基本身份验证

时间:2011-02-07 22:30:30

标签: groovy basic-authentication xmlslurper

我需要从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 个答案:

答案 0 :(得分:18)

我发现this code over here可能有帮助吗?

根据您的情况编辑此代码,我们得到:

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}" 
}

答案 1 :(得分:2)

这对你有用

请记住使用此代替上面提到的'def authString':

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