Jenkins http_请求成功,但Groovy代码得到401
我正在使用对我的Bitbucket服务器进行API调用 以下调用返回所需的结果:Jenkins http_请求成功,但Groovy代码得到401,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,我正在使用对我的Bitbucket服务器进行API调用 以下调用返回所需的结果: def my-url = "http://my-username:my-password@my-bitbucket-server.com:7990/rest/api/1.0/my-project/pull-request-10" def response = http_request my-url 然而,我对HTTP请求插件有一个问题,因为它在日志中以纯文本打印我的密码 因此,我尝试从groovy脚本执行相同的调
def my-url = "http://my-username:my-password@my-bitbucket-server.com:7990/rest/api/1.0/my-project/pull-request-10"
def response = http_request my-url
然而,我对HTTP请求插件有一个问题,因为它在日志中以纯文本打印我的密码
因此,我尝试从groovy脚本执行相同的调用:
def response = new URL(my-url).getText()
但对于这一点,我得到了401
服务器响应
知道这次调用失败的原因吗?您正在尝试使用几乎普通的Java应用Basic auth。您必须生成身份验证密钥并将其附加到请求头。尝试:
String addr = 'my-bitbucket-server.com:7990/rest/api/1.0/my-project/pull-request-10'
String authString = 'my-username:my-password'.getBytes().encodeBase64().toString()
def conn = addr.toURL().openConnection()
conn.setRequestProperty( "Authorization", "Basic ${authString}" )
def feed = new XmlSlurper().parseText( conn.content.text )
希望这会有帮助 首先,我不知道第一个代码片段是如何给你任何结果的,因为
我的url
本身不是一个有效的标识符。它不是,因为我在这里发布之前更改了它的名称。