当服务器/ api端点没有给出正确的响应时,看起来HTTPBuilder的行为出错了。 Mailgun的API不响应401,而是提供其他内容。 (如果我错了,请纠正我!)
事实上,没有发送“需要身份验证”标头,HTTPBuilder甚至不会尝试进行身份验证。
我认为我在这个帖子的帮助下解决了问题:http://groovy.329449.n5.nabble.com/HTTPBuilder-Strange-behaviour-of-auth-basic-td344479.html
他们建议,手动编写身份验证标头会强制每次都进行身份验证。需要稍微修改一下,看起来像这样:
def user = 'tom'
def pass = 'secret'
def http = new HTTPBuilder('http://myhost.com')
http.headers[ 'Authorization' ] = "Basic " + "$user:$pass".getBytes('iso-8859-1').encodeBase64()
现在似乎工作了。有更好的想法吗?这看起来像也许是一个黑客。
答案 0 :(得分:0)
尝试使用以下内容:
def authSite = new HTTPBuilder( 'https://some-protected-site.com/' )
authSite.auth.basic 'myUserName', 'myPassword'
阅读详情:http://groovy.codehaus.org/modules/http-builder/doc/auth.html