在Oracle CRM中用Groovy调用GET API遇RESTClient类解析错误求助
问题描述
在Oracle CRM中使用Groovy脚本调用GET API时,出现以下错误:
Error: "unable to resolve class groovyx.net.http.RESTClient"
运行的代码如下:
import groovy.json.JsonSlurper import groovyx.net.http.RESTClient // Define the REST API endpoint URL def apiUrl = 'https://restapi.echo.com/v2/Shipments/55493611' // Define your authentication credentials def username = 'E178387' def password = 'a9eaeb31-6f33-4e62-b0b7-a6ea446438fb' // Create a REST client def restClient = new RESTClient(apiUrl) // Set authentication headers restClient.headers['Authorization'] = "Basic " + "${username}:${password}".bytes.encodeBase64().toString() // Make a GET request def response = restClient.get() // Check the response status code if (response.status == 200) { // Parse the JSON response def jsonResponse = new JsonSlurper().parseText(response.data) // Process the JSON data println "Response: $jsonResponse" } else { println "Error: ${response.status} - ${response.statusText}" }
解决方案
错误原因是Oracle CRM的Groovy运行环境未包含groovyx.net.http.RESTClient所属的HTTPBuilder第三方类库,无法解析该类。可改用Oracle CRM内置支持的HTTP调用方式,以下是两种可行方案:
方案1:使用Oracle CRM原生RestClient
Oracle CRM提供了内置的oracle.cloud.rest.RestClient类,无需额外依赖即可使用:
import groovy.json.JsonSlurper import oracle.cloud.rest.RestClient def apiUrl = 'https://restapi.echo.com/v2/Shipments/55493611' def username = 'E178387' def password = 'a9eaeb31-6f33-4e62-b0b7-a6ea446438fb' // 创建RestClient实例 def restClient = RestClient.builder() .baseUri(apiUrl) .build() // 构造Basic Auth头部 def authHeader = "Basic " + "${username}:${password}".bytes.encodeBase64().toString() // 发起GET请求 def response = restClient.get() .header("Authorization", authHeader) .retrieve() // 解析响应 if (response.statusCode() == 200) { def jsonResponse = new JsonSlurper().parseText(response.body(String)) println "Response: $jsonResponse" } else { println "Error: ${response.statusCode()} - ${response.statusMessage()}" }
方案2:使用Java原生HttpURLConnection
若内置RestClient存在局限,可直接使用Java原生的HttpURLConnection,Groovy完全兼容Java代码:
import groovy.json.JsonSlurper def apiUrl = 'https://restapi.echo.com/v2/Shipments/55493611' def username = 'E178387' def password = 'a9eaeb31-6f33-4e62-b0b7-a6ea446438fb' // 创建连接 URL url = new URL(apiUrl) HttpURLConnection connection = (HttpURLConnection) url.openConnection() // 设置请求方法和头部 connection.setRequestMethod("GET") def authHeader = "Basic " + "${username}:${password}".bytes.encodeBase64().toString() connection.setRequestProperty("Authorization", authHeader) // 获取响应状态和内容 int responseCode = connection.getResponseCode() if (responseCode == 200) { def responseBody = connection.inputStream.text def jsonResponse = new JsonSlurper().parseText(responseBody) println "Response: $jsonResponse" } else { def errorMessage = connection.errorStream.text println "Error: ${responseCode} - ${errorMessage}" } // 关闭连接 connection.disconnect()
内容的提问来源于stack exchange,提问作者Sudhanshu Vishwakarma
相关产品推荐
相关产品推荐

