You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求带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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 16:17:18