12

我需要从 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异常。

谢谢

4

2 回答 2

22

在这里找到了这段代码,这可能有帮助吗?

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

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}" 
}
于 2011-02-08T07:56:21.013 回答
3

这对你有用

请记住使用它而不是上面提到的'def authString':

def authString  = "${usr}:${pwd}".getBytes().encodeBase64().toString()
于 2012-06-06T12:31:24.633 回答