我需要从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
例外。
由于
答案 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()