求带Basic认证的Groovy调用外部API示例脚本
Groovy调用外部API(Basic认证)示例脚本
下面是两个实现方案,分别基于Java原生API和Groovy HttpBuilder工具类,均支持Basic认证并获取API响应:
方案一:使用Java原生URLConnection(无额外依赖)
这个方案无需引入第三方库,直接利用Groovy对Java类的支持实现:
def apiUrl = "https://api.example.com/data" def username = "your_username" def password = "your_password" // 构造Basic认证的Base64编码字符串 def authString = "$username:$password".bytes.encodeBase64().toString() try { URL url = new URL(apiUrl) HttpURLConnection connection = (HttpURLConnection) url.openConnection() // 设置请求方法和认证头 connection.setRequestMethod("GET") connection.setRequestProperty("Authorization", "Basic $authString") connection.setRequestProperty("Accept", "application/json") // 获取响应码和响应内容 def responseCode = connection.getResponseCode() def responseMessage = connection.getResponseMessage() println "响应状态码: $responseCode" println "响应消息: $responseMessage" // 读取响应体内容 if (responseCode == HttpURLConnection.HTTP_OK) { def responseContent = connection.inputStream.text println "响应内容:\n$responseContent" } else { // 读取错误响应 def errorContent = connection.errorStream.text println "错误响应内容:\n$errorContent" } } catch (Exception e) { println "请求失败: ${e.message}" e.printStackTrace() }
关键点说明
- 对用户名和密码拼接后的字符串进行Base64编码,构造
Authorization请求头 - 支持判断响应状态码,分别处理成功和错误场景
- 无需额外依赖,直接运行Groovy脚本即可
方案二:使用Groovy HttpBuilder(更简洁的API)
HttpBuilder是Groovy生态中常用的HTTP客户端工具,代码更简洁,需要先引入依赖:
依赖配置(Gradle)
dependencies { implementation 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.2' }
示例脚本
@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.7.2') import groovyx.net.http.RESTClient import static groovyx.net.http.ContentType.JSON def apiUrl = "https://api.example.com/data" def username = "your_username" def password = "your_password" try { def client = new RESTClient(apiUrl) // 设置Basic认证 client.auth.basic(username, password) // 发送GET请求并指定接受JSON响应 def response = client.get(contentType: JSON) println "响应状态码: ${response.status}" println "响应内容:\n${response.data}" } catch (Exception e) { println "请求失败: ${e.message}" // 打印错误响应详情 if (e.response) { println "错误响应码: ${e.response.status}" println "错误响应内容: ${e.response.data}" } e.printStackTrace() }
关键点说明
- 使用
@Grab注解可以直接在脚本中自动下载依赖,无需手动配置 - 内置Basic认证支持,无需手动构造认证头
- 自动解析JSON响应为Groovy对象,方便后续处理
内容的提问来源于stack exchange,提问作者Namburi Manikanta
相关产品推荐
相关产品推荐

