Groovy如何在请求头中发送授权令牌?已尝试两种方式均失败
在Groovy中给请求头添加授权令牌的正确方法
你要实现的是对应 curl -H 'Authorization: token this_is_my_token' this_is_my_url 的效果,之前的两种尝试都存在问题,下面是两种可行的实现方式:
方法一:使用Groovy原生URLConnection
这是无需额外依赖的简便方案:
def url = new URL("this_is_my_url") def connection = url.openConnection() as HttpURLConnection connection.setRequestProperty("Authorization", "token this_is_my_token") connection.requestMethod = "GET" // 读取并解析响应 def response = connection.inputStream.withReader { reader -> new JsonSlurper().parse(reader) } getList(response)
方法二:使用Apache HttpClient(修正你之前的写法)
如果项目依赖Apache HttpClient,需要修正语法错误并执行请求:
import org.apache.commons.httpclient.HttpClient import org.apache.commons.httpclient.methods.GetMethod def client = new HttpClient() def getMethod = new GetMethod("this_is_my_url") // 授权头需传入完整字符串 getMethod.setRequestHeader("Authorization", "token this_is_my_token") // 执行请求 client.executeMethod(getMethod) // 读取并解析响应 def response = new JsonSlurper().parse(getMethod.getResponseBodyAsStream()) getList(response) // 释放资源 getMethod.releaseConnection()
之前代码的问题说明
- 第一种URL参数传token的方式:若接口仅接受
Authorization头的认证方式,这种参数传递自然无效。 - 第二种GetMethod写法的问题:
token this_is_my_token未加引号,不是合法的字符串参数;- 未调用
client.executeMethod(getMethod)执行请求,直接读取流无法获取有效响应。
内容的提问来源于stack exchange,提问作者Allyssa
相关产品推荐
相关产品推荐

